续上一节说明
一开始我也是使用haproxy来做的,但后来方式改了,是因为物理机controller的高配置有些浪费,我需要1组高可用的上层nginx代理服务器来实现其它域名80代理访问,很多办公网测试的域名解析58.251.17.238的IP,都是复用走这组controller的nginx
 
测试环境:haproxy + nginx
 
所以,我需要将haproxy的dashboard占用的80剥离出来
 
两边的controller主备控制节点均安装
yum install -y haproxy
 
创建目录
mkdir -p /home/haproxy/log   && mkdir -p /home/haproxy/run/
赋予目录权限
chown -R haproxy:haproxy  /home/haproxy
 
在controller1上的配置示例
 
[root@controller1 ~]# vi /etc/haproxy/haproxy.cfg
#全局配置
global
  chroot  /home/haproxy/log
  daemon
  group  haproxy
  maxconn  20000
  pidfile  /home/haproxy/run/haproxy.pid
  user  haproxy
 
defaults
  log  global
  maxconn  20000
  option  redispatch
  retries  3
  timeout  http-request 10s
  timeout  queue 1m
  timeout  connect 10s
  timeout  client 1m
  timeout  server 1m
  timeout  check 10s
 
#dashboard界面,此处注释掉,放置到nginx中。
#listen dashboard_cluster_80
# bind 10.40.42.10:80
#  balance  source
#  option  tcpka
#  option  httpchk
#  option  tcplog
#  server controller1 10.40.42.1:80 check inter 2000 rise 2 fall 5
#  server kcontroller2 10.40.42.2:80 check inter 2000 rise 2 fall 5
 
#数据库集群访问,使用backup访问实现只访问controller1,而当1挂了的时候才手工解开配置跨公网VPN访问kxcontroller2,或者再造一台数据库服务器进入数据库集群
listen galera_cluster_3306
  bind 10.40.42.10:3306
  mode tcp
  balance  source
  option  tcpka
  option  httpchk
  server controller1 10.40.42.1:3306 check port 9200 inter 2000 rise 2 fall 5
#  server kxcontroller2 10.120.42.2:3306 backup check port 9200 inter 2000 rise 2 fall 5
 
#队列 RabbitMQ 访问,使用访问实现只访问1台,当VIP在controller1上时,它只访问controller1上的rabbitmq
listen rabbitmq_cluster_5672
  bind 10.40.42.10:5672
  mode tcp
  balance roundrobin
  server controller1 10.40.42.2:5672 check inter 2000 rise 2 fall 5
#  server controller2 10.40.42.2:5672 check inter 2000 rise 2 fall 5
 
#镜像Glance API 访问,使用访问实现只访问1台,无论VIP在谁身上时,它只访问controller2上的Glance API ,controller1每天凌晨定时向controller2同步image文件,当controller2有故障时做手工冷备切换至controller1
listen glance_api_cluster_9292
  bind 10.40.42.10:9292
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
#   server controller1 10.40.42.2:9292 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9292 check inter 2000 rise 2 fall 5
 
#镜像Glance 注册 访问,使用访问实现只访问1台,无论VIP在谁身上时 ,它只访问controller2上的 Glance 注册 ,controller1每天凌晨定时向controller2同步image文件,当controller2有故障时做手工冷备切换至controller1
listen glance_registry_cluster_9191
  bind 10.40.42.10:9191
  balance  source
  option  tcpka
  option  tcplog
#   server controller1 10.40.42.1:9191 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9191 check inter 2000 rise 2 fall 5
 
#keystone 35357访问,使用访问实现只访问1台,当VIP在controller1上时,它的队列访问controller1上的 keystone 35357
listen keystone_admin_cluster_35357
  bind 10.40.42.10:35357
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:35357 check inter 2000 rise 2 fall 5
#  server controller2 10.40.42.2:35357 check inter 2000 rise 2 fall 5
 
#keystone 5000访问,使用访问实现只访问1台,当VIP在controller1上时,它只访问controller1上的 keystone 5000
listen keystone_public_internal_cluster_5000
  bind 10.40.42.10:5000
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:5000 check inter 2000 rise 2 fall 5
#  server controller2 10.40.42.2:5000 check inter 2000 rise 2 fall 5
 
#nova api访问,不考虑VIP在谁身上,这个服务可以负载均衡访问
listen nova_compute_api_cluster_8774
  bind 10.40.42.10:8774
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:8774 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8774 check inter 2000 rise 2 fall 5
 
#nova 元数据 访问,不考虑VIP在谁身上,这个服务可以负载均衡访问
listen nova_metadata_api_cluster_8775
  bind 10.40.42.10:8775
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:8775 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8775 check inter 2000 rise 2 fall 5
 
#cinder 块存储访问,这里在controller1上开启来测试了,只指向controller1,因为controller1上挂了一块iscsi的网络盘,再用网络盘,加到cinder中,暂没有回收
listen cinder_api_cluster_8776
  bind 10.40.42.10:8776
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:8776 check inter 2000 rise 2 fall 5
#  server controller2 10.40.42.2:8776 check inter 2000 rise 2 fall 5
 
#ceilometer 访问,虽然这里VIP开启,但后端服务我没开启,暂时挂在这里
listen ceilometer_api_cluster_8777
  bind 10.40.42.10:8777
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:8777 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8777 check inter 2000 rise 2 fall 5
 
 
#nova VNC访问,不考虑VIP在谁身上,这个后端 服务可以负载均衡访问
listen nova_vncproxy_cluster_6080
  bind 10.40.42.10:6080
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:6080 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:6080 check inter 2000 rise 2 fall 5
 
#neutron  api访问,不考虑VIP在谁身上,这个后端服务可以负载均衡访问
listen neutron_api_cluster_9696
  bind 10.40.42.10:9696
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:9696 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9696 check inter 2000 rise 2 fall 5
 
#swift 块存储访问,虽然这里VIP开启,但后端服务我没开启,暂时挂在这里
listen swift_proxy_cluster_8080
  bind 10.40.42.10:8080
  balance  source
  option  tcplog
  option  tcpka
  server controller1 10.40.42.1:8080 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8080 check inter 2000 rise 2 fall 5
 
#展示普能用户可用于查询的页面http://10.40.42.10:8888/stats 用户和密码admin:admin
listen admin_stats
        bind 0.0.0.0:8888
        option httplog
        mode http
        stats refresh 30s
        stats uri /stats
        stats realm Haproxy Manager
        stats auth admin:admin
 
#展示管理员 admin 页面可供修改页面http://10.40.42.10:8008/admin-venic 用户和密码venic:venic8888
listen  stats_auth 0.0.0.0:8008
        mode http
        stats enable
        stats uri /admin-venic
        stats auth venic:venic8888
        stats admin if TRUE
 
 
 
 
 
[root@controller2 ~]# vi  /etc/haproxy/haproxy.cfg 
 
#全局配置
global
  chroot  /home/haproxy/log
  daemon
  group  haproxy
  maxconn  20000
  pidfile  /home/haproxy/run/haproxy.pid
  user  haproxy
 
defaults
  log  global
  maxconn  20000
  option  redispatch
  retries  3
  timeout  http-request 10s
  timeout  queue 1m
  timeout  connect 10s
  timeout  client 1m
  timeout  server 1m
  timeout  check 10s
 
#dashboard界面,此处注释掉,放置到nginx中。
#listen dashboard_cluster_80
# bind 10.40.42.10:80
#  balance  source
#  option  tcpka
#  option  httpchk
#  option  tcplog
#  server controller1 10.40.42.1:80 check inter 2000 rise 2 fall 5
#  server kcontroller2 10.40.42.2:80 check inter 2000 rise 2 fall 5
 
#数据库集群访问,使用backup访问实现只访问controller1,而当1挂了的时候才手工解开配置跨公网VPN访问kxcontroller2,或者再造一台数据库服务器进入数据库集群
listen galera_cluster_3306
  bind 10.40.42.10:3306
  mode tcp
  balance  source
  option  tcpka
  option  httpchk
  server controller1 10.40.42.1:3306 check port 9200 inter 2000 rise 2 fall 5
#  server kxcontroller2 10.120.42.2:3306 backup check port 9200 inter 2000 rise 2 fall 5
 
#队列 RabbitMQ 访问,使用访问实现只访问1台,当VIP在controller2上时,它只访问controller2上的rabbitmq
listen rabbitmq_cluster_5672
  bind 10.40.42.10:5672
  mode tcp
  balance roundrobin
#  server controller1 10.40.42.2:5672 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:5672 check inter 2000 rise 2 fall 5
 
#镜像Glance API 访问,使用访问实现只访问1台,无论VIP在谁身上时,它只访问controller2上的Glance API ,controller1每天凌晨定时向controller2同步image文件,当controller2有故障时做手工冷备切换至controller1
listen glance_api_cluster_9292
  bind 10.40.42.10:9292
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
#  server controller1 10.40.42.2:9292 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9292 check inter 2000 rise 2 fall 5
 
#镜像Glance 注册 访问,使用访问实现只访问1台,无论VIP在谁身上时 ,它只访问controller2上的 Glance 注册 ,controller1每天凌晨定时向controller2同步image文件,当controller2有故障时做手工冷备切换至controller1
listen glance_registry_cluster_9191
  bind 10.40.42.10:9191
  balance  source
  option  tcpka
  option  tcplog
#  server controller1 10.40.42.1:9191 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9191 check inter 2000 rise 2 fall 5
 
#keystone 35357访问,使用访问实现只访问1台,当VIP在controller2上时,它的队列访问controller2上的 keystone 35357
listen keystone_admin_cluster_35357
  bind 10.40.42.10:35357
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
#  server controller1 10.40.42.1:35357 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:35357 check inter 2000 rise 2 fall 5
 
#keystone 5000访问,使用访问实现只访问1台,当VIP在controller2上时,它的队列访问kxcontroller2上的 keystone 5000
listen keystone_public_internal_cluster_5000
  bind 10.40.42.10:5000
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
#  server controller1 10.40.42.1:5000 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:5000 check inter 2000 rise 2 fall 5
 
#nova api访问,不考虑VIP在谁身上,这个服务可以负载均衡访问
listen nova_compute_api_cluster_8774
  bind 10.40.42.10:8774
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:8774 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8774 check inter 2000 rise 2 fall 5
 
#nova 元数据 访问,不考虑VIP在谁身上,这个服务可以负载均衡访问
listen nova_metadata_api_cluster_8775
  bind 10.40.42.10:8775
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:8775 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8775 check inter 2000 rise 2 fall 5
 
#cinder 块存储访问,这里在controller1上开启来测试了,只指向controller1,因为controller1上挂了一块iscsi的网络盘,再用网络盘,加到cinder中,暂没有回收
listen cinder_api_cluster_8776
  bind 10.40.42.10:8776
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:8776 check inter 2000 rise 2 fall 5
#  server controller2 10.40.42.2:8776 check inter 2000 rise 2 fall 5
 
 
#ceilometer 访问,虽然这里VIP开启,但后端服务我没开启,暂时挂在这里
listen ceilometer_api_cluster_8777
  bind 10.40.42.10:8777
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:8777 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8777 check inter 2000 rise 2 fall 5
 
#nova VNC访问,不考虑VIP在谁身上,这个后端 服务可以负载均衡访问
listen nova_vncproxy_cluster_6080
  bind 10.40.42.10:6080
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.40.42.1:6080 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:6080 check inter 2000 rise 2 fall 5
 
#neutron  api访问,不考虑VIP在谁身上,这个后端服务可以负载均衡访问
listen neutron_api_cluster_9696
  bind 10.40.42.10:9696
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.40.42.1:9696 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:9696 check inter 2000 rise 2 fall 5
 
#swift 块存储访问,虽然这里VIP开启,但后端服务我没开启,暂时挂在这里
listen swift_proxy_cluster_8080
  bind 10.40.42.10:8080
  balance  source
  option  tcplog
  option  tcpka
  server controller1 10.40.42.1:8080 check inter 2000 rise 2 fall 5
  server controller2 10.40.42.2:8080 check inter 2000 rise 2 fall 5
 
#展示普能用户可用于查询的页面http://10.40.42.10:8888/stats 用户和密码admin:admin
listen admin_stats
        bind 0.0.0.0:8888
        option httplog
        mode http
        stats refresh 30s
        stats uri /stats
        stats realm Haproxy Manager
        stats auth admin:admin
 
#展示管理员 admin 页面可供修改页面http://10.40.42.10:8008/admin-venic 用户和密码venic:venic8888
listen  stats_auth 0.0.0.0:8008
        mode http
        stats enable
        stats uri /admin-venic
        stats auth venic:venic8888
        stats admin if TRUE
 
 
 
 
两个办公网的控制主备节点配置好后,
 
systemctl start haproxy.service
systemctl enable haproxy.service
 
测试监控页面是否生效,以判断haproxy是否正常工作
http://10.120.42.10:8888/stats
http://10.120.42.10:8008/admin-venic
 
当然,它们启动时,参考上一节的情况,同样是在没有获取到VIP备节点上会发现haproxy服务启动不了。原因如下,
 
haproxy启动时提示失败:
[ALERT] 164/1100300 (11606) : Starting proxy linuxyw.com: cannot bind socket
 
修复前,在主备节点上执行 netstat -anp | grep haproxy,检测VIP的端口是否都在监听。
这个问题,其实就是因为你的haproxy没有得到VIP的原因,而你的配置文件又绑定了当前不存在VIP地址,所以会提示以上错误
当然,我们要确保的haproxy服务要提前先启动,不然等故障时,到去手动启动haproxy服务,就无法高可用了。
 
解决方法:
修改2台controller内核参数:
vi /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1
保存结果,使内核参数生效
sysctl -p
 
再启动haproxy就可以启动了
 
 
 
 
接着2台配置nginx1.9嫁接dashboard界面访问
 
相同的配置步骤:
 
yum install -y gcc gcc-c++ pcre pcre-devel openssl openssl-devel
 
接下可以使用yum 安装或者源包安装nginx,但必须是1.9以上的版本才能实现tcp的负载均衡功能。
本环境使用的是源包安装
 
SCP上传nginx1.9源包至目标controller机器的/home/目录下
 
创建等下程序安装的路径目录
mkdir /home/local/nginx1.9 -p
 
解压/home/目录下的源包
tar -zxvf nginx-1.9.12.tar.gz
cd nginx-1.9.12/
./configure --prefix=/home/local/nginx1.9 --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-stream
make && make install
 
 
cd /home/local/nginx1.9/conf
创建一个子目录,将来方便管理
mkdir conf.d
 
 
修改默认的nginx.conf配置文件
vi nginx.conf
 
清空原有配置,替代以下全局配置参数,让其声明启动时,向下文件调取*.conf的配置文件
 
user  nobody;
worker_processes  auto;
 
events {
    worker_connections  102400;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    include /home/local/nginx1.9/conf/conf.d/http/*.conf;
}
 
stream {
    proxy_timeout 1d;
    proxy_connect_timeout 30;
    include /home/local/nginx1.9/conf/conf.d/tcp/*.conf;
}
 
 
 
mkdir /home/local/nginx1.9/conf/conf.d/http
mkdir /home/local/nginx1.9/conf/conf.d/tcp
 
 
 
 
 
在controller1和controller2上同时操作
cd /home/local/nginx1.9/conf/conf.d/http/
 
vi 80_controller_10.40.42.1_2_80.conf
 
upstream controller {
                server 10.40.42.1:80;
                server 10.40.42.2:80 backup;
        }
server {
        listen  10.40.42.10:80;
        server_name     controller;
        location / {
                     proxy_redirect    off;
                     proxy_set_header  Host             $host;
                     proxy_set_header  X-Real-IP        $remote_addr;
                     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
                     proxy_pass http://controller;
        }
}
 
 
 
 
保存退出。
测试配置
/home/local/nginx1.9/sbin/nginx  -t
启动nginx
/home/local/nginx1.9/sbin/nginx 
加入开机自启
chmod +x /etc/rc.d/rc.local
 
vi /etc/rc.d/rc.local
尾部添加
/home/local/nginx1.9/sbin/nginx 
 
在自己本上的hosts文件写个 10.40.42.10 controller
测试链接是否可达http://controller/dashboard
当前在还没安装dashboard这条链接是404提示的

openstack私有云布署实践【4.2 上层代理haproxy+nginx配置 (办公网测试环境)】的更多相关文章

  1. openstack私有云布署实践【12.1 网络Neutron-controller节点配置(科兴环境)】

    网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...

  2. openstack私有云布署实践【14.2 登录页dashboard-controller(办公网环境)】

    这一小节基本配置相同,但留意以下紫色部份的配置,当初为了管理方便,我们让办公网openstack的dashboard的登录桥接了科兴的dashboard,由此统一dashboard界面的登录地址   ...

  3. openstack私有云布署实践【13.1 网络Neutron-compute节点配置(科兴环境)】

    所有kxcompute节点 下载安装组件   # yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset ...

  4. openstack私有云布署实践【9.2 Glance镜像管理(办公网环境)】

    首先登录controller1创建glance数据库,并赋于远程和本地访问的权限.      mysql -u root -p   CREATE DATABASE glance; GRANT ALL ...

  5. openstack私有云布署实践【12.2 网络Neutron-controller节点配置(办公网环境)】

    网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...

  6. openstack私有云布署实践【13.2 网络Neutron-compute节点配置(办公网环境)】

    所有compute节点 下载安装组件   # yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset -y ...

  7. openstack私有云布署实践【15 创建租户网络+实例】

    这里以办公网测试环境为例,   (一)创建租户demo的网络   使用admin用户 source admin-openrc.sh 创建public公网 neutron net-create 1040 ...

  8. openstack私有云布署实践【9.3 主从controller单向同步glance-image目录】

    采用Rysnc单向同步,而不用双方实时同步,原因是在历史的运行过程中,我们发现,有些镜像包太大,当在主用的glance将镜像保存时,并不是一时半会就把镜像保存好,当主用在保存时,备用节点又在实时同步那 ...

  9. openstack私有云布署实践【2 安装前的服务器基本环境准备】

    服务器物理机都安装centos7.2 1511版本 , 此次采用的分区方式全是自动XFS格式LVM,在装系统时就将所有本地raid5硬盘都加入LVM全用了.默认/home目录有着最大的硬盘空间 并且我 ...

随机推荐

  1. ios 获取融云token

    聊聊iOS做融云时重要的一步,获取token.token应该从服务端拿这样你的appSecret就不容易暴露.但有时开发需要也要自己先获取一个token也是可以的.请求方式有很多随你便喽,C哥(&qu ...

  2. Myeclipse 2016 CI 6 破解

    Myeclipse 2016 CI 6 破解 2016-10-11 分类:Javaweb后台 / JSP / 首页 阅读(1633) 评论(16)  之前写了myeclipse 2015 stable ...

  3. Java SE ——TCP协议网络编程(三)

    之前的代码中关闭了 socket 对象的输入流与输出流,但并没有关闭掉socket 对象,会造成服务器资源的浪费,应通过调用 socket 的 close() 方法来关闭当前的socket 对象. 因 ...

  4. 【Java每日一题】20170113

    20170112问题解析请点击今日问题下方的"[Java每日一题]20170113"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  5. Java 设计模式(二)-六大原则

    Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...

  6. 【转】关于MySQL函数GROUP_CONCAT的使用

    GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/ ...

  7. 图像预处理(Evision)

    Convolution //采用线性过滤Linear combination of neighboring pixels using a convolution kernel−Pre-defined ...

  8. [SQL基础教程] 4-1 数据的插入(INSERT)

    [SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用() ...

  9. owa_outlook暴力破解脚本

    其实msf里面存在这样的模块,search owa 即可,字典这种东西还是找规律密码去破解比较好 然后担心遇到渗透测试没有msf情况下,还是得自己写个脚本,网上找了一下lijiejie,但是运行不了, ...

  10. Tiny6410之NAND FLASH驱动

    一.NAND FLASH的特点 S3C6410的NAND FLASH控制器有如下特点 1.自导入模式:复位后,引导代码被送入到8KB的STEPPINGSTONE中,引导代码移动完毕,引导代码将在STE ...