LVS/DR + keepalived配置

注意:前面雖然我們已經配置過一些操作,但是下面我們使用keepaliave操作和之前的操作是有些沖突的,所以若是之前配置過DR,請首先做如下操作:dr上執行:

$ipv -C
ifconfig eth0:0??down

前面的lvs雖然已經配置成功也實現了負載均衡,但是我們測試的時候發現,當某臺real server把httpd進程停掉,那么director照樣會把請求轉發過去,這樣就造成了某些請求不正常。所以需要有一種機制用來檢測real server的狀態,這就是keepalived。它的作用除了可以檢測rs狀態外,還可以檢測備用director的狀態,也就是說keepalived可以實現ha集群的功能,當然了也需要一臺備用director.
備用director也需要安裝一下keepalived軟件?
yum install -y keepalived
安裝好后,編輯配置文件??
vim /etc/keepalived/keepalived.conf? ?//加入如下:
vrrp_instance VI_1 {
? ? state MASTER? ?#備用服務器上為 BACKUP
? ? interface eth0
? ? virtual_router_id 51
? ? priority 100??#備用服務器上為90
? ? advert_int 1
? ? authentication {
? ?? ???auth_type PASS
? ?? ???auth_pass 1111
? ? }
? ? virtual_ipaddress {
? ?? ???192.168.31.110
? ? }
}
virtual_server 192.168.31.110 80 {
? ? delay_loop 6? ?? ?? ?? ?? ?? ?#(每隔10秒查詢realserver狀態)
? ? lb_algo wlc? ?? ?? ?? ?? ?? ?#(lvs 算法)
? ? lb_kind DR? ?? ?? ?? ?? ?? ?#(Direct Route)
? ? persistence_timeout 60? ?? ???#(同一IP的連接60秒內被分配到同一臺realserver)
? ? protocol TCP? ?? ?? ?? ?? ? #(用TCP協議檢查realserver狀態)

? ? real_server 192.168.31.100 80 {
? ?? ???weight 100? ?? ?? ?? ?? ?#(權重)
? ?? ???TCP_CHECK {
? ?? ???connect_timeout 10? ?? ? #(10秒無響應超時)
? ?? ???nb_get_retry 3
? ?? ???delay_before_retry 3
? ?? ???connect_port 80
? ?? ???}
? ? }
real_server 192.168.31.101 80 {
? ?? ???weight 100
? ?? ???TCP_CHECK {
? ?? ???connect_timeout 10
? ?? ???nb_get_retry 3
? ?? ???delay_before_retry 3
? ?? ???connect_port 80
? ?? ???}
? ???}
}

以上為主director的配置文件,從director的配置文件只需要修改
state MASTER??-> state BACKUP
priority 100 -> priority 90
配置完keepalived后,需要開啟端口轉發(主從都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然后,兩個rs上執行 /usr/local/sbin/lvs_dr_rs.sh 腳本
最后,兩個director上啟動keepalived服務(先主后從):
/etc/init.d/keepalived start
另外,需要注意的是,啟動keepalived服務會自動生成vip和ipvsadm規則,不需要再去執行上面提到的/usr/local/sbin/lvs_dr.sh 腳本。


nginx ip_hash 實現長連接


  1. upstream test {

  2. ? ? ip_hash;

  3. ? ? server 192.168.31.100;

  4. ? ? server 192.168.31.101;

  5. }


  6. ? ???server {

  7. ? ?? ?? ?? ?listen 80;

  8. ? ?? ?? ?? ?server_name bbs.aaa.cn;


  9. ? ?? ?? ?? ?location / {

  10. ? ?? ?? ?? ?? ? proxy_pass? ?? ?http://test/;

  11. ? ?? ?? ?? ?? ? proxy_set_header Host? ?$host;

  12. ? ?? ?? ?? ?? ? proxy_set_header X-Real-IP? ?? ?$remote_addr;

  13. ? ?? ?? ?? ?? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  14. ? ?? ?? ?? ?}

  15. ? ?? ???}

復制代碼