Openshift:可靠的Kubernetes发行版k8s-openshift-okd

Openshift Nginx Router替换默认Haprox

2019-01-31  本文已影响180人  潘晓华Michael
openshift-nginx

什么是Router

Nginx作为Router的原理图

Nginx Router与默认Router比较

Nginx官方比较表格

如何替换Openshift默认Router

卸载当前Router

  1. 用system:admin登录集群
$ oc login -u system:admin
  1. 选择default项目
$ oc project default
  1. 备份现有的Router
$ oc get -o yaml service/router dc/router clusterrolebinding/router-router-role serviceaccount/router > default-router-backup.yaml
  1. 删除当前Router
$ oc delete -f default-router-backup.yaml

安装Nginx-Router

使用镜像xhuaustc/nginx-openshift-router:1.15部署nginx router

$ oc adm router router --images=xhuaustc/nginx-openshift-router:1.15  --type='' --selector='node-role.kubernetes.io/infra=true'

添加Stub Status页面的查看权限

在Router Pod所部署的结点开通1936端口的访问权限

$ sudo iptables -I OS_FIREWALL_ALLOW -p tcp -m tcp --dport 1936 -j ACCEPT 

在浏览器下查看以下链接$ROUTER_IP:1936/stub_status

添加Prometheus监控支持

  1. 运行如下命令,添加nginx exporter
$ oc patch dc/router -p 'spec:
  template:
    spec:
      containers:
      - image: nginx/nginx-prometheus-exporter:0.1.0
        name: nginx-prometheus-exporter
        ports:
        - name: prometheus
          containerPort: 9113
        args:
          - -web.listen-address
          - :9113
          - -nginx.scrape-uri
          - http://127.0.0.1:1936/stub_status'
  1. 在router service添加exporter想着的标注
$ oc annotate service router --overwrite prometheus.io/port=9113 prometheus.io/scrape=true

此时openshift集群中的prometheus就可以发现nginx exporter的数据

卸载Nginx Router

和卸载之前默认的Router一样,只需要将对应的Object删除即可

$ oc delete service/router dc/router clusterrolebinding/router-router-role serviceaccount/router

Nginx Router性能测试

测试环境:

net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  36768
net.core.somaxconn = 36768
 
net.core.wmem_default = 8588608
net.core.rmem_default = 8588608
net.core.rmem_max = 16877216
net.core.wmem_max = 16877216
 
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
 
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
 
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3376800
net.ipv4.ip_local_port_range = 1024  65535

测试工具: ab
测试命令行:ab [-k] -c 4000 -n 1000000 http://xx.com/index.html

with -k Type 页面大小 RPS
Y Svc 4KB 55050
Y Router 4KB 17862
N Svc 4KB 14866
N Router 4KB 18171
Y Svc 500B 72613
Y Router 500B 17813
N Svc 500B 14224
N Router 500B 18527
Nginx Plus版本的Dashboard

补充说明

目前测试结果与Openshift默认的Haproxy Router结果差不多,后序与Nginx工程师一起完善优化后,再作更新。
说实话,对Nginx Router还是很期待的。

参考文献

OpenShift Ecosystem: Implementing the NGINX Proxy Model on Red Hat OpenShift
Introducing NGINX and NGINX Plus Routers for OpenShift Container Platform 3.10
NGINX Plus Router for OpenShift
nginxinc/nginx-openshift-router
nginx-openshift-router/docs/nginx-oss-router-install.md

上一篇 下一篇

猜你喜欢

热点阅读