1. 程式人生 > >主備(keepalived+haproxy)

主備(keepalived+haproxy)

service example gnu lose 配置文件 tween etc queue can

系統:centos6.9 mini

主機名 ip 虛擬ip

kh1 192.168.126.210

kh2 192.168.126.220 192.168.126.100

web11 192.168.126.230

web22 192.168.126.240

1、在kh1和kh2安裝keepalived和haproxy

[root@kh1 ~]# yum install -y keepavlivd haproxy

[root@kh2 ~]# yum install -y keepavlivd haproxy

2、在web1和web2上部署web服務

[root@web11 ~]# yum install -y httpd

[root@web11 ~]# echo "web1">/var/www/html/index.html

[root@web11 ~]# service httpd restart

[root@web11 ~]# chkconfig httpd on

[root@web22 ~]# yum install -y httpd

[root@web22 ~]# echo "web2">/var/www/html/index.html

[root@web22 ~]# service httpd restart

[root@web22 ~]# chkconfig httpd on

3、在kh1和kh2 配置keepalived,在kh1上查看虛擬ip

[root@kh1 ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id kh1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.126.100

}

}

[root@kh1 ~]# /etc/init.d/keepalived restart

[root@kh1 ~]# ip addr list

link/ether 00:0c:29:da:01:36 brd ff:ff:ff:ff:ff:ff

inet 192.168.126.210/24 brd 192.168.126.255 scope global eth0

inet 192.168.126.100/32 scope global eth0

[root@kh2 ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id kn2

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.126.100

}

}

[root@kh2 ~]# /etc/init.d/keepalived restart

4、在kh1和kh2上配置haproxy(兩個節點的配置一樣的,紅色部分為添加部分)

[root@kh1 ~]# cat /etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------

# Example configuration for a possible web application. See the

# full configuration options online.

#

# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

#

#---------------------------------------------------------------------

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

# to have these messages end up in /var/log/haproxy.log you will

# need to:

#

# 1) configure syslog to accept network log events. This is done

# by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in

# /etc/sysconfig/syslog

#

# 2) configure local2 events to go to the /var/log/haproxy.log

# file. A line like the following can be added to

# /etc/sysconfig/syslog

#

# local2.* /var/log/haproxy.log

#

log 127.0.0.1 local2

chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

daemon

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------

# common defaults that all the ‘listen‘ and ‘backend‘ sections will

# use if not designated in their block

#---------------------------------------------------------------------

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

stats uri /haproxy-stats #監控頁面的url

stats refresh 30s #更新頁面時間

stats auth admin:admin #監控頁面的提示信息

stats hide-version #隱藏統計頁面上的HAproxy版本信息

#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

frontend http_80_in

bind *:80 #監聽端口,即haproxy提供web服務的端口,和lvs的vip端口類似

mode http #http的7層模式

log global

default_backend test1

#---------------------------------------------------------------------

# static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------

#backend static

# balance roundrobin

#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

backend test1

balance roundrobin

server web11 192.168.126.230:80 weight 1 check inter 15000 rise 2 fall 4

server web22 192.168.126.240:80 weight 2 check inter 15000 rise 2 fall 4

#web集群配置,服務器定義web11,webv22 ,check inter 1500是檢測心跳頻率rise 2是2次正確認為服務器可用,

fall 4是4次失敗認為服務器不可用,weight代表權重

[root@kh1 ~]# scp /etc/haproxy/haproxy.cfg [email protected]:/etc/haproxy/haproxy.cfg

#復制配置文件到kh2上

[root@kh1 ~]# /etc/init.d/haproxy restart

[root@kh2 ~]# /etc/init.d/haproxy restart

5、驗證

5.1 在kh1上關掉keepalived和haproxy 服務,vip 轉移到kh2上,後端服務正常

[root@kh1 ~]# /etc/init.d/keepalived stop

Stopping keepalived: [ OK ]

[root@kh1 ~]# /etc/init.d/haproxy stop

Stopping haproxy:

[root@kh2 ~]# ip addr list

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:80:2e:09 brd ff:ff:ff:ff:ff:ff

inet 192.168.126.220/24 brd 192.168.126.255 scope global eth0

inet 192.168.126.100/32 scope global eth0

inet6 fe80::20c:29ff:fe80:2e09/64 scope link

valid_lft forever preferred_lft forever

[root@kh2 ~]# curl http://192.168.126.100

web2

[root@kh2 ~]# curl http://192.168.126.100

web2

[root@kh2 ~]# curl http://192.168.126.100

web1

5.2 訪問haproxy 監控頁面,在瀏覽器輸入http://192.168.126.100/haproxy-stats ,填入用戶名admin和密碼admin(圖一),接著看到的是監控的頁面(圖二),可以看到web11,web2都是up的,當web11 宕機了,再次刷新,可以看到web11的狀態是down 的,顏色變成了紅色(圖三)

技術分享圖片

技術分享圖片

技術分享圖片

主備(keepalived+haproxy)