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

Openshift结合IaaS的LB与Nginx实现高可用可伸缩

2018-09-30  本文已影响129人  潘晓华Michael

背景

原理

部署操作

IaaS上资源准备

  1. 创建VPC IaaS
  2. 创建私网 IaaS
  3. 在私网下创建两台主机(instance1, instance2) IaaS
  4. 创建一个LB Iaas

搭建应用与配置

  1. LB上创建三个监听器(8443/TCP, 443/TCP, 80/TCP) IaaS
  2. LB的三个监听器的后端都配置为两台Instance IaaS
  3. 在instance上安装nginx Instance
[root@i-8 root]# yum install nginx
  1. 配置nginx Instance
    openshift route服务器IP: 99.3.1.11、99.3.1.12
    openshift master服务器IP: 99.3.1.1、99.3.1.2、99.3.1.3
[root@i-8 conf.d]# cat /etc/nginx/nginx.conf
...
events {
    worker_connections 1024;
}
stream{
    include /etc/nginx/conf.d/tcp.conf;
}
http {
...
[root@i-8 conf.d]# cat /etc/nginx/conf.d/tcp.conf
upstream nginx80{
    server 99.3.1.11:80;
    server 99.3.1.12:80;
}
server {
    listen       80;
    proxy_pass nginx80;
}

upstream nginx443{
    server 99.3.1.11:443;
    server 99.3.1.12:443;
}
server {
    listen       443;
    proxy_pass nginx443;
}

upstream nginx8443{
    server 99.3.1.1:8443;
    server 99.3.1.2:8443;
    server 99.3.1.3:8443;
}
server {
    listen       8443;
    proxy_pass nginx8443;
}
  1. 启动nginx
[root@i-8 root]# systemctl start nginx
[root@i-8 root]# systemctl enable nginx

至此一个可监控、高可用且具有弹性伸缩功能的外部负载均衡器就完成了。

演示方法

与之前访问openshift的服务一样,只是将域名解析的IP指向IaaS的LB就可以了
所有服务都能正常访问。同时对于不同的项目,可以通过创建不同的LB,来实现了负载均衡的扩容,Nginx应用也可以通过创建更多的Instance进行扩容。

补充说明

感谢有朋友提出了以下问题:
"nginx不好用,除非nginx plus,否则一个master api不可用,还是会访问到那个节点。haproxy配置也很简单,可以有健康检查,如果熟悉的话,最好使用haproxy来作为代理应用。”
朋友提出的问题确实是一个很严重的问题,我对haproxy确实不太熟悉~~。
但是朋友说的这个问题其实不必太担心,因为nginx默认的轮询方式的请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。所以nginx自己会对openshift的服务作了检查,来避免朋友提出的问题。
我也单独对nginx的这个健康检查作了验证,确实是有效的。
再次感谢提出问题的朋友,后序我也找时间使用haproxy作下测试。

上一篇 下一篇

猜你喜欢

热点阅读