# 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
# ./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
分別在兩臺負載服務器同時執行如下操做安裝keepalived:服務器
# 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
}
}
# 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
}
}
# 啓動keepalived
# systemctl start keepalived
# systemctl enable keepalived
# ifconfig
分別在兩臺負載服務器同時執行如下操做安裝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
# 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,從而實現單主進程多子進程運行模式。
# 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
# 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=""
# 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
# vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1 #開啓容許綁定非本機的IP,haporxy啓動忽視VIP存在
net.ipv4.ip_forward = 1 #內核是否轉發數據包
# sysctl -p # 配置內核參數生效
# systemctl reload haproxy
# systemctl start haproxy
# systemctl enable haproxy
主要爲keepalived監控haproxy,以防haproxy死掉,keepalived進程還存活。
# 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
待續………