haproxy是一個(gè)反向代理服務(wù)器,可以實(shí)現(xiàn)4層和7層的負(fù)載均衡。他自帶強(qiáng)大的監(jiān)控服務(wù)器狀態(tài)的頁(yè)面,監(jiān)控起來(lái)相當(dāng)方便,下面我們來(lái)用haproxy實(shí)現(xiàn)高可用的負(fù)載均衡集群,其架構(gòu)如下圖所示
客戶端訪問(wèn)vip,然后兩臺(tái)調(diào)度器哪臺(tái)優(yōu)先級(jí)高哪臺(tái)取得vip,通過(guò)haproxy提供代理服務(wù),通過(guò)調(diào)度算法找到后端的節(jié)點(diǎn)。
實(shí)現(xiàn)步驟:
1.部署nfs服務(wù)器
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# vim /etc/exports
添加如下內(nèi)容
/usr/share/wordpress/ 172.16.200.103(rw,no_root_squash) 172.16.200.104(rw,no_root_squash) #no_root_squash表示不壓縮權(quán)限,在本地使用時(shí)權(quán)限仍然為root,不寫(xiě)這一條可能導(dǎo)致本地不能創(chuàng)建文件。
[root@localhost ~]# service rpcbind start
[root@localhost ~]# service nfs start
[root@localhost ~]# exportfs -v #檢測(cè)共享成功
然后下載wordpress安裝包,解壓到/usr/share/之下
2.在兩臺(tái)節(jié)點(diǎn)服務(wù)器上部署lamp環(huán)境:
(1)配置php和httpd
[root@localhost ~]# yum -y install httpd php mysql-server php-mysql
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>
用瀏覽器訪問(wèn)http://172.16.200.103/index.php ,出現(xiàn)php頁(yè)面證明php和httpd安裝成功
(2)掛載nfs文件系統(tǒng):
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# mkdir /var/www/html/wordpress/
[root@localhost ~]# mount 172.16.200.105:/usr/share/wordpress /var/www/html/wordpress/
(3)然后配置mysql
[root@localhost ~]# service mysqld start
[root@localhost ~]# mysql_secure_installation #運(yùn)行mysql初始化程序,給root設(shè)置個(gè)密碼,然后刪除多余的用戶和庫(kù)
[root@localhost ~]# mysql -u root -p #輸入密碼后進(jìn)入mysql
mysql> create database wordpress; #創(chuàng)建專(zhuān)用庫(kù)
mysql> grant all on wordpress.* to worduser@'172.16.%.%' identified by '123'; #創(chuàng)建并授權(quán)用戶
(4)
完成后訪問(wèn)172.16.200.103/wordpress,出現(xiàn)wordpress設(shè)置頁(yè)面,將在數(shù)據(jù)庫(kù)中創(chuàng)建的庫(kù)名和用戶名密碼輸入,ip地址填寫(xiě)為當(dāng)前l(fā)amp服務(wù)器的ip。然后下一步,這里會(huì)提示我們創(chuàng)建配置文件,我們?cè)趙ordpress目錄下創(chuàng)建這個(gè)文件,然后將內(nèi)容粘貼進(jìn)去:
[root@localhost wordpress]# cd /var/www/html/wordpress/
[root@localhost wordpress]# vim wp-config.php
將網(wǎng)頁(yè)中提示的文件內(nèi)容粘貼進(jìn)去就行,這里就不在顯示文件內(nèi)容了
然后輸入標(biāo)題,輸入網(wǎng)站用戶名和密碼,就進(jìn)入到wordpress中了
3.在兩臺(tái)調(diào)度器上安裝haproxy服務(wù),并配置文件。
主配置文件/etc/haproxy/haproxy.cfg的格式如下
配置段:
global:全局配置段
進(jìn)程及安全配置相關(guān)的參數(shù)
性能調(diào)整相關(guān)參數(shù)
Debug參數(shù)
proxies:代理配置段
defaults:為frontend, listen, backend提供默認(rèn)配置;
fronted:前端,相當(dāng)于nginx, server {}
backend:后端,相當(dāng)于nginx, upstream {}
listen:同時(shí)擁前端和后端,一般將服務(wù)器狀態(tài)頁(yè)面部署進(jìn)到這個(gè)段中。
[root@localhost ~]# yum -y install haproxy
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
#找到frontend main *:5000行,將這行和之后的內(nèi)容都刪除掉,自己定義以下內(nèi)容
frontend web
bind *:80
default_backend websrvs
backend websrvs
balance roundrobin
server srv1 172.16.200.103:80 check
server srv2 172.16.200.104:80 check
然后重啟haproxy,測(cè)試
4.部署keepalived
在兩臺(tái)調(diào)度器上安裝keepalived,然后部署
這是第一臺(tái)的配置
[root@localhost ~]# yum -y install keepalived
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
feng@mageedu.com
}
notification_email_from admin@mageedu.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.16.120.18
}
vrrp_script chk_haproxy {
script "killall -o haproxy"
interval 2
weight -10
fall 2
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 16
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.200.100
}
track_script {
chk_proxy
}
}
這是第二臺(tái)的配置
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 16
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.200.100
}
track_script {
chk_proxy
}
}