免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

HAProxy雙機高可用方案之HAProxy+Keepalived

創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站建設、成都做網站、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的惠城網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!HAProxy雙機高可用方案之HAProxy+Keepalived

一、keepalived高可用

Keepalived 的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,并將有故障的web服務器從系統中剔除, 當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的 web服務器。

系統環境: RHEL6.5x86_64small install selinux and iptables disabled

Virtual IP 192.168.2.254

192.168.2.162server62.exampl.com (master)

192.168.2.163server63.example.com(backup)

192.168.2.52 desktop52.example.com(real server)

192.168.2.53 desktop53.example.com(real server)

編輯/etc/hoststs做以上解析

1.keepalived的安裝配置

主備機上的軟件包安裝與配置

#yum install ipvsadm kernel-devel openssl-devel popt-devel libnl-devel gcc make -y

源碼編譯安裝keepalived:

#wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz

#tar zxf keepalived-1.2.12.tar.gz

#cd keepalived-1.2.12

#./configure --prefix=/usr/local/keepalived (安裝目錄)

... Keepalived configuration

------------------------

Keepalived version : 1.2.5

Compiler : gcc

Compiler flags : -g -O2

Extra Lib : -lpopt -lssl -lcrypto -lnl

Use IPVS Framework : Yes

IPVS sync daemon support : Yes

IPVS use libnl : Yes

Use VRRP Framework : Yes

Use VRRP VMAC : Yes

SNMP support : No

Use Debug flags : No

#make && make install

創建鏈接:

#ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

#ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

#ln -s /usr/local/keepalived/etc/keepalived /etc/

#ln -s /usr/local/keepalived/sbin/keepalived /sbin

keepalived主配置文件的修改:

#vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {

notification_email {
root@localhost #接收警報的 email 地址,可以添加多個

}
notification_email_from keepalived@server62.example.com #設置郵件的發送地址

smtp_server 127.0.0.1 #設置郵件的發送地址

smtp_connect_timeout 30 #設置連接 smtp 服務器超時時間

router_id LVS_DEVEL #load balancer 的標識 ID,用于 email 警報

}
vrrp_instance VI_1 {
stateMASTER #備機改為 BACKUP,此狀態是由 priority 的值來決定的,當前priority 的值小于備機的值,那么將會失去 MASTER 狀態

interface eth0 #HA 監測網絡接口

virtual_router_id 200 #主、備機的 virtual_router_id 必須相同,取值 0-255

priority78#主機的優先級,主機優先級一定要大于備機

advert_int 1 #主備之間的通告間隔秒數

authentication {#主備切換時的驗證

auth_type PASS #設置驗證類型,主要有 PASS 和 AH 兩種

auth_pass 1111 #設置驗證密碼,在一個 vrrp_instance 下,MASTER 與 BACKUP 必須使用相同的密碼才能正常通信
}
virtual_ipaddress {
192.168.2.254#設置虛擬 IP 地址,可以設置多個虛擬 IP 地址,每行一個

}
virtual_server 192.168.2.254 80 {#定義虛擬服務器

delay_loop 6 #每隔 6 秒查詢 realserver 狀態

lb_algo rr #lvs 調度算法,這里使用輪叫

lb_kind DR #LVS 是用 DR 模式

#persistence_timeout 50 #會話保持時間,單位是秒,這個選項對于動態網頁是非常有用的,為集群系統中 session 共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是無響應超時時間,也就是說用戶在操作動態頁面時,如果在 50 秒內沒有執行任何操作,那么接下來的操作會被分發到另外節點,但是如果一直在操作動態頁面,則不受 50 秒的時間限制。(默認是打開的,要禁掉哦)

protocol TCP #指定轉發協議類型,有 tcp 和 udp 兩種

real_server 192.168.2.52 80 { #配置服務節點

weight 1 #配置服務節點的權值,權值大小用數字表示,數字越大,權值越高,設置權值的大小可以為不同性能的服務器分配不同的負載,可以對性能高的服務器設置較高的權值,而對性能較低的服務器設置相對較低的權值,這樣就合理的利用和分配了系統資源

TCP_CHECK { #realserve 的狀態檢測設置部分,單位是秒

connect_timeout 3 #10 秒無響應超時

nb_get_retry 3 #重試次數

delay_before_retry 3 #重試間隔

}

}
real_server 192.168.2.53 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

#/etc/init.d/keepalived restart 啟動keepalived

2.realserver的配置

#分別在 realserver 上執行以下命令添加策略

192.168.2.53

#ifconfig eth0:0 192.168.2.254 netmask 255.255.255.255 up 添加虛擬ip

#arptables -A IN -d 192.168.2.254 -j DROP

#arptables -A OUT -s 192.168.2.254 -j mangle --mangle-ip-s 192.168.2.53

這些配置會寫入文件/etc/sysconfig/arptables

#/etc/init.d/arptables_jf save

#/etc/init.d/arptables_jf start

#echo `hostname` > /var/www/html/index.html

#service httpd start

192.168.2.52

#ifconfig eth0:0 192.168.2.254 netmask 255.255.255.255 up

#arptables -A IN -d 192.168.2.254 -jDROP

#arptables -A OUT -s 192.168.2.254 -j mangle --mangle-ip-s 192.168.2.52

這些配置會寫入文件/etc/sysconfig/arptables

#/etc/init.d/arptables_jf save

#/etc/init.d/arptables_jf start

#echo `hostname` > /var/www/html/index.html

#service httpd start

最后在master主機查看是否添加成功

# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.254:http rr
-> server52.example.com:http Route 1 0 7
-> server53.example.com:http Route 1 0 8

4.測試:
1.高可用測試:停止 master 上的 keepalived 服務,看 backup 是否接管。
2. 負載均衡測試:訪問 http://192.168.2.254,看到頁面在兩個 realserver 上切換表示成功你也可以通過 ipvsadm -Lnc 查看詳細連接情況!
3. 故障切換測試:任意關閉 realserver 上的 httpd 服務,Keepalived 監控模塊是否能及時發現,然后屏蔽故障節點,同時將服務轉移到正常節點來執行。

5.添加ftp服務:(理論需要再加一個需擬IP,可是一個IP也可以)

在兩個服務節點安裝vsftpd服務

[root@server52 ~]# yum install -y vsftpd

[root@server52 ftp]# ls在ftp的發布目錄里寫東西測試;

pub server52(server53)

[root@server52 ftp]#service vsftpd restart 開啟服務

修改兩臺調度器的配置文件:

master和backup主機修改住配置文件

# vim /etc/keepalived/keepalived.conf 在其后添加

virtual_server 192.168.2.254 21 (ftp端口號是21){
delay_loop 3
lb_algo rr
lb_kind DR
persistence_timeout 50 -----》持續鏈接(!很重要哦)
protocol TCP

real_server 192.168.2.52 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.2.53 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

reload兩臺調度器

# /etc/init.d/keepalived reload

!注意:如果使用的是另一個虛擬ip,要在real server主機上用arptables分別添加進去(本實驗為了方便不做演示,具體過程如上)。

測試:先用瀏覽器測試httpd服務是否能正常啟動,再用真機終端測ftp服務
# lftp 192.168.2.254
lftp 192.168.2.254:~> ls
drwxr-xr-x 2 0 0 4096 Feb 12 2013 pub
-rw-r--r-- 1 0 0 0 May 31 08:02 server52
lftp 192.168.2.254:/> quit

查看是否添加成功

# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.254:ftp rr persistent 50
-> server52.example.com:ftp Route 1 0 0
-> server53.example.com:ftp Route 1 0 0
TCP 192.168.2.254:http rr
-> server52.example.com:http Route 1 0 0
-> server53.example.com:http Route 1 0 0

二、haproxy負載均衡

HAProxy 提供高可用性、負載均衡以及基于 TCP 和 HTTP 應用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案。HAProxy 特別適用于那些負載特大的 web 站點, 這些站點通常又需要會話保持或七層處理。HAProxy 運行在當前的硬件上,完全可以支持數以萬計的并發連接。并且它的運行模式使得它可以很簡單安全的整 合進您當前的架構中, 同時可以保護你的 web 服務器不被暴露到網絡上。

節點主機:192.168.2.162 haproxy 、keepalived

192.168.2.163 haproxy、keepalived

realserver:192.168.2.52 web1

192.168.2.53 web2

vip : 192.168.2.254

1.haproxy的安裝配置

1.1、rpm 包方式:rpmbuild -tb haproxy-1.4.23.tar.gz

rpm -ivh /root/rpmbuild/RPMS/x86_64/haproxy-1.4.23-1.x86_64.rpm

1.2、源碼方式:

tar zxf haproxy-1.4.23.tar.gz

cd haproxy-1.4.23

make TARGET=linux26 ARCH=x86_64 USE_PCRE=1 PREFIX=/usr/local/haproxy install

2、修改配置文件:

#vi /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 local0#指定日志設備

#log 127.0.0.1 local1 notice

log loghost local0 info #指定日志類型,還有 err warning debug

maxconn 65535 #并發連接數量

chroot /usr/share/haproxy #jail 目錄

uid 99 #用戶

gid 99 #組

daemon #后臺運行

#debug

#quiet

defaults

logglobal

mode http #默認使用 http 的 7 層模式 tcp: 4 層

option httplog #http 日志格式

option dontlognull #禁用空鏈接日志

retries 3 #重試 3 次失敗認為服務器不可用

option redispatch #當 client 連接到掛掉的機器時,重新分配到健康的主機

maxconn 65535

contimeout 5000 #連接超時

clitimeout 50000 #客戶端超時

srvtimeout 50000 #服務器端超時

stats uri/status#haproxy 監控頁面

listen www.example.com *:80#監聽的實例名稱,地址和端口

balance roundrobin#負載均衡算法

server web1 192.168.2.52:80 cookie app1inst1 check inter 2000 rise 2 fall 5

server web2 192.168.2.53:80 cookie app1inst2 check inter 2000 rise 2 fall 5

#cookie app1inst1:表示 serverid 為 app1inst1#check inter 2000:檢測心跳頻率

#rise 2:表示 2 次正確認為服務器可用#fall 5:表示 5 次失敗認為服務器不可用

# mkdir /usr/share/haproxy

# /etc/init.d/haproxy start

當 haproxy啟動報錯——Starting proxy www.example.com: cannot bind socket這個問題,其實就是因為你的haproxy沒有得到VIP的原因,而你的配置文件又綁定了VIP地址,所以會提示以上錯誤當然,你也要確保你 的haproxy服務器做了hearbeat或keepalived,綁定VIP,要不就無法高可用了。
解決方法:

修改內核參數: /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind=1

保存結果,使結果生效

sysctl –p

或者使用echo進去,前提是sysctl.conf文件中沒有本條參數:

echo \'net.ipv4.ip_nonlocal_bind = 1\'>>/etc/sysctl.conf##net.ipv4.ip_nonlocal_bind=1 意思是啟動haproxy的時候,允許忽視VIP的存在

除上面的原因之外,還有可能造成Starting proxy www.example.com: cannot bind socket確定你的haproxy服務器中是否開啟有apache或nginx等WEB服務,如果有,請先停掉這些服務否則就出現以上故障。

順便提醒下,haproxy代理服務器同時也要打開內核的轉發功能,如下參數:

net.ipv4.ip_forward = 1

2.測試:

訪問 http://www.example.com 測試負載,訪問 haproxy 監控頁面:http://192.168.2.162/status

監控頁面添加認證:

listen stats_auth *:80

stats enable

stats uri /status #監控頁面地址

stats auth admin:westos #管理帳號和密碼

stats refresh 5s #刷新頻率

haproxy 日志:

# vi /etc/rsyslog.conf #接受 haproxy 日志

$ModLoad imudp

$UDPServerRun 514

local0.* /var/log/haproxy.log#日志文件位置

# /etc/init.d/rsyslog restart

三、haproxy+keepalived的整合

MASTER:

#vim /etc/keepalived/ keepalived.conf

# cat keepalived.conf

! Configuration File for keepalived

vrrp_script check_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@server62.example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 151

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.2.254

}

track_script {

check_haproxy

}

}

BACKUP:

# cat keepalived.conf

! Configuration File for keepalived

vrrp_script check_haproxy {

script "/etc/keepalived/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@server63.example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 151

priority 50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.2.254

}

track_script {

check_haproxy

}

}

檢測腳本:

# cat /etc/keepalived/check_haproxy.sh(記得加可執行權限哦)

#!/bin/bash

/etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null

if [ $? -ne 0 ];then

/etc/init.d/keepalived stop &> /dev/null

fi

到此整個架構搭建完成,這時可以通過haproxy的監控頁面來監控負載均衡

四、驗證此架構及注意事項

我們可以關閉主HAProxy機器或重新啟動,看在此過程中,VIP地址有沒有正確的轉移到從HAProxy機器上,影響我們訪問網站沒,以上步驟我自己測試過多次,而且線上環境的穩定行,證明HAProxy+Keeaplived雙機方案確實是有效的。

關于HAProxy+Heartbeat這種負載均衡高可用架構,有些情況我也跟大家說明一下:

◆在此HAProxy+Keepalivp負載均衡高可用架構中,我們是如何解決session的問題呢?我們這里采用的是它自身的balance source(負載均衡)機制,它跟Nginx的ip_hash機制原理類似,是讓客戶機訪問時始終訪問后端的某一臺真實的web服務器,這樣讓session就固定 下來了;

◆有網友配置HAProxy時喜歡用listen xxx.xxx.xxx.xxx:80這樣的格式,這樣其實不好,做負載均衡高可用時由于從機分配不到VIP地址,會導致從機啟動不了,我建議用bind *:80的方式來代替。

網站欄目:HAProxy雙機高可用方案之HAProxy+Keepalived
網頁地址:http://m.newbst.com/article18/cggcdp.html

成都網站建設公司_創新互聯,為您提供網站收錄營銷型網站建設軟件開發微信公眾號網站設計公司自適應網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設