為什么80%的碼農都做不了架構師?>>> ??
環境:
虛擬機系統:Ubuntu 12.04
hostname | ip | |
---|---|---|
LVSMaster | eth0:192.168.31.198 eth1:10.10.100.100 | |
LVSBackup | eth0:192.168.31.197 eth1:10.10.100.101 | LVS 備機 |
RealserverNet1 | eth0:10.10.100.53 | 真實機器 lvs net模式 |
RealserverNet2 | eth0:10.10.100.54 | 真實機器 lvs net模式 |
RealserverDR1 | eth0:192.168.31.186 | 真實機器 lvs dr模式 |
DR模式需要的VIP: 192.168.31.200
NET模式需要的VIP: 10.10.100.200
真實服務器配置
ubuntu lvm要選嗎。參照lvs 筆記
安裝
LVSMaster和LVSBackup安裝keepalived和lvs
apt-get install keepalived
apt-get install ipvsadm
lvs配置
LVSMaster配置文件
vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {router_id LVSMaster
}vrrp_instance VI_1 {state MASTERinterface eth0 # 對外服務的網卡virtual_router_id 100 #VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬于同一VRRP組priority 100 #主節點的優先級(1-254之間),備用節點必須比主節點優先級低advert_int 1 #設置主備之間同步檢查的時間間隔單位秒 authentication { #設置驗證信息,兩個節點必須一致auth_type PASSauth_pass 123456 } virtual_ipaddress { #指定虛擬IP, 兩個節點設置必須一樣192.168.31.200}
}#lvs NAT配置
virtual_server 192.168.31.200 80 {delay_loop 6lb_algo wrr #設置負載高度算法,wrr帶權循環lb_kind NAT #設置LVS實現負載均衡的機制,可以為{NAT|TUN|DR}三種#persistence_timeout 50 #會話保持時間,單位為秒。動態網頁session共享簡單的決解辦法。測試的時候注掉,不然看不出效果protocol TCP #指定轉發協議類型可以設置{TCP|UDP}兩種real_server 10.10.100.53 80 { #真實的主機weight 10 #真實的主機的權重,數字越大,權重越高 TCP_CHECK { #設置檢測Realserver的方式connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 10.10.100.54 80 {weight 10TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}}#lvs DR配置
virtual_server 192.168.31.200 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.31.186 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 80}}}
LVSBackup配置文件
scp /etc/keepalived/keepalived.conf 10.10.100.101:/etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
只用修改
state BACKUP
priority 90
! Configuration File for keepalivedglobal_defs { router_id LVSMaster }vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 100 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.31.200 }
}virtual_server 192.168.31.200 80 { delay_loop 6 lb_algo wrr lb_kind NAT #persistence_timeout 50 protocol TCP real_server 10.10.100.53 80 { weight 10 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 }}real_server 10.10.100.54 80 { weight 10 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 }}}virtual_server 192.168.31.200 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.31.186 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 }}
}
啟動
master 和backup 啟動 keepalived
service keepalived start
測試
root@LVSMaster:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:2b:e9:71 brd ff:ff:ff:ff:ff:ffinet 192.168.31.198/24 brd 192.168.31.255 scope global eth0valid_lft forever preferred_lft foreverinet 192.168.31.200/32 scope global eth0 #現在序列IP在LVSMaster上valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe2b:e971/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:2b:e9:7b brd ff:ff:ff:ff:ff:ffinet 10.10.100.100/24 brd 10.10.100.255 scope global eth1valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe2b:e97b/64 scope link valid_lft forever preferred_lft forever
ubuntu live server?訪問 http://192.168.31.200/
模擬master出問題
root@LVSMaster:~# service keepalived stop
#vip已經沒了
root@LVSMaster:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:2b:e9:71 brd ff:ff:ff:ff:ff:ffinet 192.168.31.198/24 brd 192.168.31.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe2b:e971/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:2b:e9:7b brd ff:ff:ff:ff:ff:ffinet 10.10.100.100/24 brd 10.10.100.255 scope global eth1valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe2b:e97b/64 scope link valid_lft forever preferred_lft forever#vip在LVSBackup上
root@LVSBackup:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:7f:11:bd brd ff:ff:ff:ff:ff:ffinet 192.168.31.197/24 brd 192.168.31.255 scope global eth0valid_lft forever preferred_lft foreverinet 192.168.31.200/32 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe7f:11bd/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:7f:11:c7 brd ff:ff:ff:ff:ff:ffinet 10.10.100.101/24 brd 10.10.100.255 scope global eth1valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe7f:11c7/64 scope link valid_lft forever preferred_lft forever