openstack controller ha測試環境搭建記錄(三)——配置haproxy


haproxy.cfg請備份再編輯:
# vi /etc/haproxy/haproxy.cfg

global
    chroot /var/lib/haproxy
    daemon
    group haproxy
    maxconn 4000
    pidfile /var/run/haproxy.pid
    user haproxy

defaults
    log global
    maxconn 4000
    option redispatch
    retries 3
    timeout http-request 10s
    timeout queue 1m
    timeout connect 10s
    timeout client 1m
    timeout server 1m
    timeout check 10s

listen galera_cluster
    bind 10.0.0.10:3306
    balance source
    option httpchk
    server controller2 10.0.0.12:3306 check port 9200 inter 2000 rise 2 fall 5
    server controller3 10.0.0.13:3306 check port 9200 inter 2000 rise 2 fall 5


每個節點都要編輯haproxy.cfg。
此處只是測試haproxy,為每個節點的3306端口做負責平衡。3306是mariadb的監聽端口,此處未安裝,將在下一篇文章中安裝。


由於需要將集群資源綁定到VIP,需要修改各節點的內核參數:
# echo 'net.ipv4.ip_nonlocal_bind = 1'>>/etc/sysctl.conf
# sysctl -p


在集群中增加haproxy服務資源:
# crm configure primitive haproxy lsb:haproxy op monitor interval="30s"
“lsb:haproxy”表示haproxy服務。

ERROR: lsb:haproxy: got no meta-data, does this RA exist?
ERROR: lsb:haproxy: got no meta-data, does this RA exist?
ERROR: lsb:haproxy: no such resource agent
Do you still want to commit (y/n)? n

似乎crm命令不識別“haproxy”服務。查看crm目前能識別哪些服務:
# crm ra list lsb
netconsole  network

netconsole和network位於/etc/rc.d/init.d目錄中,是centos7默認情況下僅有的服務腳本,推測在此目錄創建haproxy的服務腳本即可(每個節點均要):
# vi /etc/rc.d/init.d/haproxy

內容如下:
#!/bin/bash

case "$1" in
  start)
        systemctl start haproxy.service
        ;;
  stop)
        systemctl stop haproxy.service
        ;;
  status)
        systemctl status -l haproxy.service
        ;;
  restart)
        systemctl restart haproxy.service
        ;;
  *)
        echo '$1 = start|stop|status|restart'
        ;;
esac


記得授予可執行權限:
chmod 755 /etc/rc.d/init.d/haproxy


再次確認crm命令是否能識別“haproxy”:
# crm ra list lsb
haproxy     netconsole  network
已經有了haproxy,“service haproxy status”命令也能用了,請再次嘗試創建haproxy服務資源。


查看資源狀態:
# crm_mon
Last updated: Tue Dec  8 11:28:35 2015
Last change: Tue Dec  8 11:28:28 2015
Stack: corosync
Current DC: controller2 (167772172) - partition with quorum
Version: 1.1.12-a14efad
2 Nodes configured
2 Resources configured


Online: [ controller2 controller3 ]

myvip   (ocf::heartbeat:IPaddr2):       Started controller2
haproxy (lsb:haproxy):  Started controller3

目前haproxy資源在節點controller3上,在controller3上查看haproxy服務狀態,已是active:
# systemctl status -l haproxy.service


定義HAProxy和VIP必須在同一節點上運行:
# crm configure colocation haproxy-with-vip INFINITY: haproxy myvip

定義先接管VIP之后才啟動HAProxy:
# crm configure order haproxy-after-vip mandatory: myvip haproxy

--------------------------------------------------------------------------------------------
把HAProxy實例部署在openstack的控制節點上,已經成為一種共識。實例的數量最好是奇數,如3、5等。

官網完整的haproxy.cfg實例內容如下:
global
    chroot /var/lib/haproxy
    daemon
    group haproxy
    maxconn 4000
    pidfile /var/run/haproxy.pid
    user haproxy

defaults
    log global
    maxconn 4000
    option redispatch
    retries 3
    timeout http-request 10s
    timeout queue 1m
    timeout connect 10s
    timeout client 1m
    timeout server 1m
    timeout check 10s

listen dashboard_cluster
  bind <Virtual IP>:443
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:443 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:443 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:443 check inter 2000 rise 2 fall 5

listen galera_cluster
    bind <Virtual IP>:3306
    balance source
    option httpchk
    server controller1 10.0.0.4:3306 check port 9200 inter 2000 rise 2 fall 5
    server controller2 10.0.0.5:3306 backup check port 9200 inter 2000 rise 2 fall 5
    server controller3 10.0.0.6:3306 backup check port 9200 inter 2000 rise 2 fall 5

listen glance_api_cluster
  bind <Virtual IP>:9292
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:9292 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:9292 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:9292 check inter 2000 rise 2 fall 5

listen glance_registry_cluster
  bind <Virtual IP>:9191
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.0.0.1:9191 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:9191 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:9191 check inter 2000 rise 2 fall 5

listen keystone_admin_cluster
  bind <Virtual IP>:35357
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:35357 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:35357 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:35357 check inter 2000 rise 2 fall 5

listen keystone_public_internal_cluster
  bind <Virtual IP>:5000
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:5000 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:5000 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:5000 check inter 2000 rise 2 fall 5

listen nova_ec2_api_cluster
  bind <Virtual IP>:8773
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.0.0.1:8773 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8773 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8773 check inter 2000 rise 2 fall 5

listen nova_compute_api_cluster
  bind <Virtual IP>:8774
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:8774 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8774 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8774 check inter 2000 rise 2 fall 5

listen nova_metadata_api_cluster
  bind <Virtual IP>:8775
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.0.0.1:8775 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8775 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8775 check inter 2000 rise 2 fall 5

listen cinder_api_cluster
  bind <Virtual IP>:8776
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:8776 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8776 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8776 check inter 2000 rise 2 fall 5

listen ceilometer_api_cluster
  bind <Virtual IP>:8777
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:8777 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8777 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8777 check inter 2000 rise 2 fall 5

listen spice_cluster
  bind <Virtual IP>:6080
  balance  source
  option  tcpka
  option  tcplog
  server controller1 10.0.0.1:6080 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:6080 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:6080 check inter 2000 rise 2 fall 5

listen neutron_api_cluster
  bind <Virtual IP>:9696
  balance  source
  option  tcpka
  option  httpchk
  option  tcplog
  server controller1 10.0.0.1:9696 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:9696 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:9696 check inter 2000 rise 2 fall 5

listen swift_proxy_cluster
  bind <Virtual IP>:8080
  balance  source
  option  tcplog
  option  tcpka
  server controller1 10.0.0.1:8080 check inter 2000 rise 2 fall 5
  server controller2 10.0.0.2:8080 check inter 2000 rise 2 fall 5
  server controller3 10.0.0.3:8080 check inter 2000 rise 2 fall 5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM