LVS+keepalived高可用負載均衡集群部署(二)---LAMP網站服務器與LVS服務器
l 硬件環境:虛擬機
l 項目描述:為解決網站訪問壓力大的問題,需要搭建高可用、負載均衡的 web集群。
l 架構說明:整個服務架構采用功能分離的方式部署。後端采用2臺mysql 數據庫,實現主從結構以及讀寫分離。中間LAMP網站服務器共有2臺, 前端 2臺LVS服務器通過keepalived實現高可用負載均衡。
l 關鍵技術:keepalived 、lvs DR模式 、mysql主從 、maxscale 讀寫 分離
l 項目拓撲圖:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
註:所有系統 環境 禁用selinux和防火墻
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
理論疏理:
(1).LB(Load Balancing):負載均衡集群
負載均衡集群中有一個分發器或者叫調度器,我們將其稱之為Director,它處在多臺服務器的上面,分發器根據內部鎖定義的規則或調度方式從下面的服務器群中選擇一個以此來響應客戶端發送的請求。
(2).HA(High Availability) 高可用集群
高可用集群是服務的可用性比較高,當我們某臺服務器死機後不會造成我們的服務不可用。其工作模式則是將一個具有故障的服務轉交給一個正常工作的服務器,從而達到服務不會中斷。一般來說我們集群中工作在前端(分發器)的服務器都會對我們的後端服務器做一個健康檢查,如果發現我們服務器當機就不會對其在做轉發。
LVS(linux虛擬服務器) 是章文嵩在國防科技大學就讀博士期間創建的
LVS集群組成:前端負載均衡層 ——由一臺或多臺負載調度器構成
中間服務器群組層 ——由一組實際運行應用服務的服務器組成
低端:屬數據共享存儲層 ——提供共享存儲空間的存儲區域
LVS術語:
Director Server 調度服務器
Real Server 真實服務器
VIP 虛擬ip地址
RIP 真實ip地址
DIP 調度器連接節點服務器的
LVS工作模式:
*NAT模式
TUN模式
*DR 模式
LVS調度算法:
輪詢 (RR)
加權輪詢 (WRR)
最少連接 (LC)
加權最少連接 (WLC)
***************************************************************************************************
***************************************************************************************************
<部署2臺網站服務器,2臺LVS服務器,實現LB負載均衡和HA高可用>
在這裏,我們將配置2臺LAMP網站服務器
(Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。)
l 步驟一:部署192.168.4.33與192.168.4.44的LAMP網站服務器
l [root@web_33 ~]# yum -y install mariadb-server php httpd mariadb php-mysql
l 啟動服務:
[root@web_33 ~]# systemctl start httpd
[root@web_33 ~]# systemctl enable httpd ——》設置開機自啟
[root@web_33 ~]# systemctl start mariadb
[root@web_33 ~]# systemctl enable mariadb ——》設置開機自啟
l 設置數據庫管理員本機登陸密碼
[root@web_33 ~]# mysqladmin -hlocalhost -uroot password "123456"
l 創建數據庫(庫.表),授權連接用戶,測試驗證PHP能否連接本機的數據庫服務器
[root@web_33 ~]# mysql -uroot -p123456
MariaDB [(none)]> create database lampdb;
MariaDB [lampdb]> create table lampdb.aaa(id int);
MariaDB [lampdb]> insert into lampdb.aaa values(31),(32);
MariaDB [lampdb]> grant all on lampdb.* to harry@'localhost' identified by "123456";
[root@web_33 ~]# vim /var/www/html/test.php
<?php
$db=mysql_connect("localhost","harry","123456");
if($db){echo "ok";}else{echo "err";};
?>
[root@web_33 ~]# elinks --dump http://192.168.4.33/test.php #證明LAMP部署成功
ok
備註:mysql_connect() 函數打開非持久的mysql連接
l 192.168.4.44部署lamp步驟同上
l 步驟二:部署192.168.4.88和192.168.4.99的lvs服務器,,,,分發器模式是LVS/DR
Keepalived高可用故障切換轉移原理
Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協議)來實現的。
l [root@lvs_88 ~]# yum -y install keepalived
修改配置文件
[root@lvs_88 ~]# rpm -qc keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
[root@lvs_88 ~]# vim /etc/keepalived/keepalived.conf
…… ……
15 vrrp_instance VI_1 {
16 state MASTER ————》 聲明(定義)是主LVS分發器
17 interface eth0
18 virtual_router_id 51
19 priority 150 ————》優先級高於備用的LVS分發器
20 advert_int 1
21 authentication {
22 auth_type PASS
23 auth_pass 1111
24 }
25 virtual_ipaddress {
26 192.168.4.253 ——》虛擬vip地址
27 }
28 }
29
30 virtual_server 192.168.4.253 80 {
31 delay_loop 6
32 lb_algo rr ——————》rr輪詢調度算法
33 lb_kind DR ——————》DR模式
34 nat_mask 255.255.255.0
35 #persistence_timeout 50
36 protocol TCP
37 connect_timeout 3
38 nb_get_retry 3
39 delay_before_retry 3
40
41 real_server 192.168.4.33 80 { ——》真實web服務器
42 weight 1
43 }
44 real_server 192.168.4.44 80 {
45 weight 1
46 }
47 }
啟動服務,並設置開機自啟
[root@lvs_88 ~]# systemctl start keepalived ——》啟動服務
[root@lvs_88 ~]# systemctl enable keepalived ————》設置開機自啟
l [root@lvs_99 ~]# yum -y install keepalived
修改配置文件
[root@lvs_99 ~]# rpm -qc keepalived
/etc/keepalived/keepalived.conf
/etc/sysconfig/keepalived
[root@lvs_99 ~]# vim /etc/keepalived/keepalived.conf
15 vrrp_instance VI_1 {
16 state BACKUP ————》聲明是備用的LVS分發器
17 interface eth0
18 virtual_router_id 51
19 priority 100 ————》優先級低於主分發器
20 advert_int 1
21 authentication {
22 auth_type PASS
23 auth_pass 1111
24 }
25 virtual_ipaddress { ——》虛擬vip地址
26 192.168.4.253
27 }
28 }
29
30 virtual_server 192.168.4.253 80 {
31 delay_loop 6
32 lb_algo rr ——————》rr輪詢調度算法
33 lb_kind DR ——————》DR模式
34 nat_mask 255.255.255.0
35 #persistence_timeout 50
36 protocol TCP
37 connect_timeout 3
38 nb_get_retry 3
39 delay_before_retry 3
40
41
42 real_server 192.168.4.33 80 {
43 weight 1
44 }
45 real_server 192.168.4.44 80 {
46 weight 1
47 }
48 }
啟動服務,並設置開機自啟
[root@lvs_99 ~]# systemctl start keepalived ——》啟動服務
[root@lvs_99 ~]# systemctl enable keepalived ——————》設置開機自啟
l 步驟三:配置網站服務器
192.168.4.33
[root@web_33 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web_33 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web_33 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web_33 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web_33 ~]# ifconfig lo:1 192.168.4.253/32
[root@web_33 ~]# echo "web33" > /var/www/html/test.html
192.168.4.44
[root@web_44 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web_44 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web_44 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web_44 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web_44 ~]# ifconfig lo:1 192.168.4.253/32
[root@web_44 ~]# echo "web44" > /var/www/html/test.html
以上的配置除了test.htmlwai外都是臨時的,若想要永久的,就需要在/etc/rc.local 內寫入。
[root@web_33 ~]# vim /etc/rc.local
[root@web_44 ~]# vim /etc/rc.local
l 步驟四:測試
客戶端:192.168.4.254
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web33
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web44
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web33
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web44
確認是輪詢,訪問網站的請求平均的分發給主機33和44
192.168.4.88:
[root@lvs_88 ~]# systemctl stop keepalived
客戶端192.168.4.254:
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web33
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web44
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web33
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
web44
192.168.4.99:
[root@lvs_99 ~]# systemctl stop keepalived
客戶端192.168.4.254:
[root@room8pc205 桌面]# elinks -dump http://192.168.4.253/test.html
ELinks: 沒有到主機的路由
訪問無反饋,確認集群正確,具備主LVS分發器,和備用LVS分發器
未完待續。。。
LVS+keepalived高可用負載均衡集群部署(二)---LAMP網站服務器與LVS服務器