zoukankan      html  css  js  c++  java
  • B05-openstack高可用-haproxy集群部署

    1. 安装haproxy

    在全部控制节点安装haproxy,以controller01节点为例

    [root@controller03 ~]# yum -y install haproxy

    2:配置haproxy.cfg

    [root@controller01 ~]# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

    [root@controller01 ~]# cat /etc/haproxy/haproxy.cfg
    global
      log      127.0.0.1     local0
      chroot   /var/lib/haproxy
      daemon
      group    haproxy
      user     haproxy
      maxconn  4000
      pidfile  /var/run/haproxy.pid
      stats    socket /var/lib/haproxy/stats

    defaults
        mode                    http
        log                     global
        option                  httplog
        option                  dontlognull
        option http-server-close
        option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
        maxconn                 3000


    # haproxy监控页
    listen stats
      bind 0.0.0.0:1080
      mode http
      stats enable
      stats uri /
      stats realm OpenStack Haproxy
      stats auth admin:admin
      stats  refresh 30s
      stats  show-node
      stats  show-legends
      stats  hide-version

    # horizon服务
     listen dashboard_cluster
      bind  10.100.214.200:80
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:80 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:80 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:80 check inter 2000 rise 2 fall 5

    # mariadb服务;
    # 设置controller01节点为master,controller02/03节点为backup,一主多备的架构可规避数据不一致性;
    # 另外官方示例为检测9200(心跳)端口,测试在mariadb服务宕机的情况下,虽然”/usr/bin/clustercheck”脚本已探测不到服务,但受xinetd控制的9200端口依然正常,导致haproxy始终将请求转发到mariadb服务宕机的节点,暂时修改为监听3306端口
    listen galera_cluster
      bind 10.100.214.200:3306
      balance  source
      mode    tcp
      server controller01 10.100.214.203:3306 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:3306 backup check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:3306 backup check inter 2000 rise 2 fall 5

    # 为rabbirmq提供ha集群访问端口,供openstack各服务访问;
    # 如果openstack各服务直接连接rabbitmq集群,这里可不设置rabbitmq的负载均衡
     listen rabbitmq_cluster
       bind 10.100.214.200:5673
       mode tcp
       option tcpka
       balance roundrobin
       timeout client  3h
       timeout server  3h
       option  clitcpka
       server controller01 10.100.214.201:5672 check inter 10s rise 2 fall 5
       server controller02 10.100.214.202:5672 check inter 10s rise 2 fall 5
       server controller03 10.100.214.203:5672 check inter 10s rise 2 fall 5

    # glance_api服务
     listen glance_api_cluster
      bind  10.100.214.200:9292
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:9292 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:9292 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:9292 check inter 2000 rise 2 fall 5

    # glance_registry服务
     listen glance_registry_cluster
      bind 10.100.214.200:9191
      balance  source
      option  tcpka
      option  tcplog
      server controller01 10.100.214.201:9191 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:9191 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:9191 check inter 2000 rise 2 fall 5

    # keystone_admin_internal_api服务
     listen keystone_admin_cluster
      bind 10.100.214.200:35357
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:35357 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:35357 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:35357 check inter 2000 rise 2 fall 5

    # keystone_public _api服务
     listen keystone_public_cluster
      bind 10.100.214.200:5000
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:5000 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:5000 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:5000 check inter 2000 rise 2 fall 5

    # 兼容aws ec2-api
     listen nova_ec2_api_cluster
      bind 10.100.214.200:8773
      balance  source
      option  tcpka
      option  tcplog
      server controller01 10.100.214.201:8773 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:8773 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:8773 check inter 2000 rise 2 fall 5

     listen nova_compute_api_cluster
      bind 10.100.214.200:8774
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:8774 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:8774 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:8774 check inter 2000 rise 2 fall 5

     listen nova_placement_cluster
      bind 10.100.214.200:8778
      balance  source
      option  tcpka
      option  tcplog
      server controller01 10.100.214.201:8778 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:8778 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:8778 check inter 2000 rise 2 fall 5

     listen nova_metadata_api_cluster
      bind 10.100.214.200:8775
      balance  source
      option  tcpka
      option  tcplog
      server controller01 10.100.214.201:8775 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:8775 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:8775 check inter 2000 rise 2 fall 5

     listen nova_vncproxy_cluster
      bind 10.100.214.200:6080
      balance  source
      option  tcpka
      option  tcplog
      server controller01 10.100.214.201:6080 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:6080 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:6080 check inter 2000 rise 2 fall 5

     listen neutron_api_cluster
      bind 10.100.214.200:9696
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:9696 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:9696 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:9696 check inter 2000 rise 2 fall 5

     listen cinder_api_cluster
      bind 10.100.214.200:8776
      balance  source
      option  tcpka
      option  httpchk
      option  tcplog
      server controller01 10.100.214.201:8776 check inter 2000 rise 2 fall 5
      server controller02 10.100.214.202:8776 check inter 2000 rise 2 fall 5
      server controller03 10.100.214.203:8776 check inter 2000 rise 2 fall 5

    将配置文件拷贝到其他节点中:

    [root@controller01 ~]# scp /etc/haproxy/haproxy.cfg 10.100.214.202:/etc/haproxy/haproxy.cfg
    [root@controller01 ~]# scp /etc/haproxy/haproxy.cfg 10.100.214.203:/etc/haproxy/haproxy.cfg

    3:配置内核参数

    # 全部控制节点修改内核参数,以controller01节点为例;
    # net.ipv4.ip_nonlocal_bind:是否允许no-local ip绑定,关系到haproxy实例与vip能否绑定并切换;
    # net.ipv4.ip_forward:是否允许转发

    [root@controller01 ~]# echo "net.ipv4.ip_nonlocal_bind = 1" >>/etc/sysctl.conf
    [root@controller01 ~]# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
    [root@controller01 ~]# sysctl -p
    net.ipv4.ip_nonlocal_bind = 1
    net.ipv4.ip_forward = 1

    4:启动服务

    [root@controller01 ~]# systemctl enable haproxy && systemctl restart  haproxy && systemctl status haproxy

    5:设置pcs资源:

    # 任意控制节点操作即可,以controller01节点为例;
    # 添加资源lb-haproxy-clone
    
    [root@controller01 ~]# pcs resource create lb-haproxy systemd:haproxy --clone [root@controller01 ~]# pcs resource
     vip    (ocf::heartbeat:IPaddr2):    Started controller01
     Clone Set: lb-haproxy-clone [lb-haproxy]
         Started: [ controller01 controller02 controller03 ]
    # 设置资源启动顺序,先vip再lb-haproxy-clone;
    # 通过“cibadmin --query --scope constraints”可查看资源约束配置
    [root@controller01 ~]# pcs constraint order start vip then lb-haproxy-clone kind=Optional --force
    Adding vip lb-haproxy-clone (kind: Optional) (Options: first-action=start then-action=start)

     # 官方建议设置vip运行在haproxy active的节点,通过绑定lb-haproxy-clone与vip服务,将两种资源约束在1个节点; # 约束后,从资源角度看,其余暂时没有获得vip的节点的haproxy会被pcs关闭

     [root@controller01 ~]# pcs constraint colocation add lb-haproxy-clone with vip --force
    [root@controller01 ~]# pcs resource
     vip    (ocf::heartbeat:IPaddr2):    Started controller01
     Clone Set: lb-haproxy-clone [lb-haproxy]
         Started: [ controller01 ]
         Stopped: [ controller02 controller03 ]

  • 相关阅读:
    ajax 上传文件
    在linux服务器centos上使用svn同步代码到项目中
    css3 选择器 权重问题 (第二部分)
    css3 选择器 权重问题 (第一部分)
    css3 文本模型
    (java)剑指offer题三
    (java)剑指0ffer题二
    (java)剑指offer题一
    java程序入口main()方法浅析
    jar命令浅析
  • 原文地址:https://www.cnblogs.com/zhaopei123/p/13091736.html
Copyright © 2011-2022 走看看