Openstack(三)Haproxy+Keepalived雙機

3.1部署keepalived

3.1.1下載keepalived源碼包,並解壓

# wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gznode

# tar xf keepalived-1.4.2.tar.gzmysql

# cd keepalived-1.4.2linux

 

3.1.2安裝包

# ./configure --prefix=/usr/local/keepalived --disable-fwmark && make && make installsql

# cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived.rh.init /etc/sysconfig/keepalived.sysconfigvim

# cp -f /usr/local/src/keepalived-1.4.2/keepalived/keepalived.service  /usr/lib/systemd/system/後端

# cp  /usr/local/src/keepalived-1.4.2/bin/keepalived  /usr/sbin/bash

 

3.1.3配置keepalived

分別在兩臺負載服務器同時執行如下操做安裝keepalived:服務器

3.1.3.1master服務器:

# mkdir /etc/keepalivedapp

# mkdir /etc/keepalived/vipfrontend

# cat /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {

    state MASTER  # 主機類型,MASTER, BACKUP

    interface br0  # 實例綁定的網卡

    virtual_router_id 80  # router_id必改

    priority 50   # 優先級

    advert_int 1  # 檢查間隔,默認爲1秒

    unicast_src_ip 192.168.10.205  # 本機ip

    unicast_peer {

        192.168.10.206  # 備機ip

    }

 

    authentication {

        auth_type PASS  # 負載同步驗證方式

        auth_pass 123456  

    }

    virtual_ipaddress {

        192.168.10.100/24 dev br0 label br0:0  # vip配置

    }

}

include /etc/keepalived/vip/*.conf  # 配置文件導入

 

# vim /etc/keepalived/vip/vip_br1.conf

vrrp_instance VI_2 {

    state BACKUP

    interface br1

    virtual_router_id 81

    priority 100

    advert_int 1

    unicast_src_ip 192.168.20.205

    unicast_peer {

        192.168.20.206

    }

 

    authentication {

        auth_type PASS

        auth_pass 123456

    }

    virtual_ipaddress {

        192.168.20.100/24 dev br1 label br1:0

    }

}

3.1.3.2backup服務器:

# mkdir /etc/keepalived

# mkdir /etc/keepalived/vip

# cat /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {

    state MASTER

    interface bond0

    virtual_router_id 80

    priority 100

    advert_int 1

    unicast_src_ip 192.168.10.206

    unicast_peer {

        192.168.10.205

    }

 

    authentication {

        auth_type PASS

        auth_pass 123456

    }

    virtual_ipaddress {

        192.168.10.100/24 dev bond0 label bond0:0

    }

}

include /etc/keepalived/vip/*.conf

 

# vim /etc/keepalived/vip/vip_br1.conf

vrrp_instance VI_2 {

    state BACKUP

    interface bond1

    virtual_router_id 81

priority 50  

advert_int 1

    unicast_src_ip 192.168.20.205

    unicast_peer {

        192.168.20.206

    }

 

    authentication {

        auth_type PASS

        auth_pass 123456

    }

    virtual_ipaddress {

        192.168.20.100/24 dev bond1 label bond1:0

    }

}

3.1.3.3 驗證

# 啓動keepalived

# systemctl  start keepalived

# systemctl  enable keepalived

# ifconfig

 

 

3.2部署haproxy

分別在兩臺負載服務器同時執行如下操做安裝haproxy:

3.2.1:下載haproxy:

# wget http://www.haproxy.org/download/1.8/src/haproxy-1.8.4.tar.gz

# tar xf  haproxy-1.8.4.tar.gz

# cd haproxy-1.8.4

3.2.2: 安裝haproxy:

# make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy  /usr/sbin/ 

# # USE_PCRE=1 開啓正則 USE_OPENSSL=1 開啓openssl USE_ZLIB=1

# # USE_CPU_AFFINITY=1 爲開啓haproxy進程與CPU核心綁定,USE_SYSTEMD=1爲支持使用 -Ws參數(systemd-aware master-worker 模式)啓動Haproxy,從而實現單主進程多子進程運行模式。

 

3.3.3:配置haproxy

3.3.3.1:準備haproxy啓動腳本

# cat /usr/lib/systemd/system/haproxy.service

[Unit]

Description=HAProxy Load Balancer

After=syslog.target network.target

 

[Service]

#支持多配置文件讀取,相似於從側面是實現配置文件的include功能。

ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -c -q

ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid

ExecReload=/bin/kill -USR2 $MAINPID

 

[Install]

WantedBy=multi-user.target

You have new mail in /var/spool/mail/root

 

## cp ./haproxy-systemd-wrapper  /usr/sbin/haproxy-systemd-wrapper  (haproxy1.7版本使用)

# cp ./haproxy /usr/sbin/haproxy

3.3.3.2準備系統配置文件

# cat  /etc/sysconfig/haproxy

# Add extra options to the haproxy daemon here. This can be useful for

# specifying multiple configuration files with multiple -f options.

# See haproxy(1) for a complete list of options.

OPTIONS=""

3.3.3.3配置主配置文件

# mkdir /var/lib/haproxy

# mkdir /etc/haproxy

# vim /etc/haproxy/haproxy.cfg

global

maxconn 100000

chroot /usr/local/haproxy

#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin

uid 99

gid 99

daemon

nbproc 4

cpu-map 1 0

cpu-map 2 1

cpu-map 3 2

cpu-map 4 3

pidfile /usr/local/haproxy/run/haproxy.pid

log 127.0.0.1 local3 info

 

defaults

option http-keep-alive #當serverId對應的服務器掛掉後,強制定向到其餘健康的服務器

option  forwardfor   #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的連接

maxconn 100000

mode http

timeout connect 10s #鏈接到一臺服務器的最長等待時間

timeout client  20s #鏈接客戶端發送數據最長等待時間

timeout server  30s #服務器迴應客戶端發送數據最長等待時間

timeout check   5s   #對後端服務器的檢測超時時間

 

 

listen stats

 mode http

 bind 0.0.0.0:9999

 stats enable

 log global

 stats uri     /haproxy-status  # 頁面訪問路徑

 stats auth    haadmin:q1w2e3r4ys

 

#####################分文件conf/*.cfg 配置實例###############

frontend openstack_mysql

    bind 192.168.10.100:3306

    mode tcp

    default_backend  openstack_mysql_node

 

backend  openstack_mysql_node

    mode tcp

    balance source

    server 192.168.10.201  192.168.10.201:3306   check inter 2000 fall 3 rise 5

3.3.3.4配置各個負載的內核參數

# vim /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind = 1  #開啓容許綁定非本機的IP,haporxy啓動忽視VIP存在

net.ipv4.ip_forward = 1 #內核是否轉發數據包

# sysctl  -p  # 配置內核參數生效

3.3.3.5 啓動haproxy並驗證

# systemctl reload haproxy

# systemctl  start haproxy

# systemctl  enable  haproxy

 

 

3.3整合keepalived+haproxy

主要爲keepalived監控haproxy,以防haproxy死掉,keepalived進程還存活。

3.3.1配置keepalived嚴控haproxy進程

# vim  /etc/keepalived/<keepalived配置文件> 添加

vrrp_script chk_haproxy {

        script "/etc/keepalived/check_haproxy.sh"

        interval 5

        weight 2

}

 

track_script {

                chk_haproxy

        }

 

# vim /etc/keepalived/check_haproxy.sh

#!/bin/bash

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

        haproxy -f /opt/haproxy-1.7.8/haproxy.cfg

fi

sleep 2

if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then

        service keepalived stop

fi

3.4驗證

待續………

相關文章
相關標籤/搜索