您好,登錄后才能下訂單哦!
Haproxy是目前比較流行的一種群集調度工具,同類群集調度工具有很多,如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對復雜,搭建LVS群集可以參考博文:搭建:LVS+Keepalived高可用Web服務群集環境;Nginx的upstream模塊支持群集功能,但是相對群集節點健康檢查功能不強,性能沒有Haproxy好,更多的是應用在企業內網環境中。Nginx群集可以參考博文:centos 7部署Tomcat及其負載均衡配置詳解。
上述幾個web群集調度器屬于軟件類型的,還有很多硬件群集調度器,硬件一般使用比較多的是F5,也有很多公司使用國產的一些產品,如梭子魚、綠盟等。硬件群集調度器有一些比較顯而易見的缺點,如果說出問題了,還要需要廠家的技術支持,廠家維護時還需要我們的錯誤日志,在出現問題到問題解決這段時間,可能一個月的時間都過去了。若是使用軟件型的群集調度器,那么只要我們運維人員技術過硬,發現問題到解決問題,很快的。
關于Haproxy常用的調度算法、配置文件及參數優化可以參考博文:centos 7 之haproxy的配置文件詳解及haproxy參數調優
現在以下面的環境,進行搭建一個keepalived的高可用web群集(關于高可用存儲服務器,這里就省略了,將在以后的文章寫出如何搭建高可用的存儲服務器),環境如下:
一、準備工作:
1、調通網絡,防火墻放行相關流量(我這里直接將防火墻關閉了);
2、準備系統映像,配置本地yum(自行配置)。
3、下載haproxy源碼包,可以從我提供的網盤鏈接下載使用:haproxy下載鏈接
提取碼:54iv 。
4、web網站使用apache、Nginx、Tomcat搭建都可,只要可以訪問就行,這里自行搭建吧,我為了測試方便,直接使用系統映像自帶的httpd服務,web網站搭建可以參考:基于Linux搭建Apache網站服務配置詳解;基于centos 7搭建Nginx網站服務器
5、我這里使用的全部是centos 7系統,注意,該環境不是生產環境,若是在生產環境中,肯定還有后端存儲來存放網頁文件,web服務器讀取存儲服務器上的網頁返回給客戶端。這樣才可保證網頁內容的一致性。
二、開始搭建:
1、配置keepalived+haproxy主服務器:
[root@haproxy1 ~]# yum -y install keepalived pcre-devel bzip2-devel
#掛載系統映像,安裝相關軟件包
[root@haproxy1 media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/ #解包
[root@haproxy1 media]# cd /usr/src/haproxy-1.5.19/ #切換至源碼包目錄
[root@haproxy1 haproxy-1.5.19]# make TARGET=linux26 && make install
#編譯安裝,TARGET配置項表示64位系統。haproxy無須./configure配置。
[root@haproxy1 haproxy-1.5.19]# mkdir /etc/haproxy #創建配置文件目錄
[root@haproxy1 haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
#將源碼包自帶的配置文件目錄復制過來。
[root@haproxy1 haproxy-1.5.19]# cd
[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg
#編輯主配置文件,根據當前環境,將主配置文件修改如下:
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log /dev/log local0 info
log /dev/log local0 notice
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy #將該行注釋掉
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webcluster 0.0.0.0:80 #webcluster為群集名稱,可自定義,修改后面的端口號。
option httpchk /index.html
balance roundrobin #表示采用輪詢算法。
server inst1 192.168.1.3:80 check inter 2000 fall 3 #web節點1
server inst2 192.168.1.4:80 check inter 2000 fall 3 #web節點2,注意相關端口號
#注意,在配置文件下,有很多listen配置項,找到和我們需要的差不多的listen項復制到
#defaults配置項下,然后將后面所有的配置項刪除,若不刪除,可能服務啟動時會報錯。
[root@haproxy1 ~]# cd /usr/src/haproxy-1.5.19/examples/ #切換至指定目錄
[root@haproxy1 examples]# cp haproxy.init /etc/init.d/haproxy #復制服務控制腳本
[root@haproxy1 examples]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
#創建軟連接
[root@haproxy1 examples]# chmod +x /etc/init.d/haproxy #賦予文件執行權限
[root@haproxy1 examples]# chkconfig --add /etc/init.d/haproxy #添加為系統服務
[root@haproxy1 examples]# systemctl restart haproxy #啟動haproxy服務
[root@haproxy1 examples]# netstat -anpt | grep 80 #查看是否在監聽
#haproxy服務默認監聽80端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12640/haproxy
[root@haproxy1 ~]# vim /etc/rsyslog.d/haproxy.conf #配置haproxy日志,寫入下面內容
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~
#寫入后,保存退出即可。
[root@haproxy1 ~]# systemctl restart rsyslog #重啟日志服務
#以下部分開始配置keepalived,haproxy已經配置完成了。
#現在client可以訪問該服務器IP地址,看看是否可以刷到兩個web服務器提供的網頁。
#需要多刷新幾次,web服務器準備不一樣的網頁才可看到效果。
[root@haproxy1 ~]# vim /etc/keepalived/keepalived.conf #編輯keepalived配置文件
#只改動以下標注的配置項即可
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL1 #定義服務器名稱,不可與其他服務器名稱沖突
}
vrrp_instance VI_1 {
state MASTER
interface ens33 #修改承載漂移IP地址的物理網卡
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100 #指定漂移IP地址
}
}
#配置項至此保存退出就可以了,將后面的所有配置項刪除,以免影響服務啟動。
[root@haproxy1 ~]# systemctl restart keepalived #重啟keepalived服務。
2、配置keepalived+haproxy備份服務器:
[root@haproxy2 ~]# systemctl stop firewalld #關閉防火墻
[root@haproxy2 ~]# yum -y install keepalived pcre-devel bzip2-devel
#掛載系統映像,安裝相關軟件包
[root@haproxy2 media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src #解包
[root@haproxy2 media]# cd /usr/src/haproxy-1.5.19/
[root@haproxy2 haproxy-1.5.19]# make TARGET=linux26 && make install #安裝
[root@haproxy2 haproxy-1.5.19]# cd
[root@haproxy2 ~]# mkdir /etc/haproxy #創建配置文件目錄
[root@haproxy2 ~]# scp root@192.168.1.1:/etc/haproxy/haproxy.cfg /etc/haproxy/
#直接將主服務器的haproxy配置文件復制過來
root@192.168.1.1 s password: #輸入主服務器的用戶密碼
haproxy.cfg 100% 566 460.5KB/s 00:00
[root@haproxy2 ~]# scp root@192.168.1.1:/etc/init.d/haproxy /etc/init.d/haproxy
root@192.168.1.1s password:
haproxy 100% 2553 2.1MB/s 00:00
[root@haproxy2 ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy #創建鏈接文件
[root@haproxy2 ~]# chkconfig --add /etc/init.d/haproxy #添加為系統服務
[root@haproxy2 ~]# systemctl start haproxy #啟動服務
[root@haproxy1 examples]# netstat -anpt | grep 80 #查看是否在監聽
#haproxy服務默認監聽80端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12640/haproxy
[root@haproxy1 ~]# vim /etc/rsyslog.d/haproxy.conf #配置haproxy日志,寫入下面內容
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~
#寫完保存退出即可。
[root@haproxy2 ~]# systemctl restart rsyslog #重啟日志服務
[root@haproxy2 ~]# scp root@192.168.1.1:/etc/keepalived/keepalived.conf /etc/keepalived/
#將主服務器的keepalived配置文件復制過來
root@192.168.1.1s password: #輸入主服務器的用戶密碼
keepalived.conf 100% 630 622.3KB/s 00:00
[root@haproxy2 ~]# vim /etc/keepalived/keepalived.conf
#修改下面三個配置項:
................
router_id LVS_DEVEL2 #將服務器名稱改一下,別和主服務器沖突
..............
state BACKUP #將狀態改為BACKUP
...............
priority 90 #修改一下優先級,要比主服務器優先級低
#改完以上三行,保存退出即可。
[root@haproxy2 ~]# systemctl start keepalived #啟動keepalived服務
至此,keepalived+haproxy就配置完成了,可以使用client進行訪問測試,模擬主服務器宕機等問題,測試高可用。
[root@haproxy1 ~]# tail -f /var/log/haproxy/haproxy-info.log #查看haproxy訪問日志
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。