LVS
搭建
- 準備 兩台 web ,和 一台 資料庫
mysql1 192.168.4.1 ===tpl04 172.16.93.143
web1 192.168.4.2 ===tpl02 172.16.93.140
web2 192.168.4.3 === tpl03 172.16.93.141
lvs 192.168.4.4 ==== tpl01 192.168.29.168
201.。。。 ====tpl01 172.16.93.144
在mysql1 上::
mysql > grant all on *.* to ‘admin’@‘192.168.4.2’ identified by ‘123qwe’; //web01
mysql > grant all on *.* to ‘admin’@‘192.168.4.3’ identified by ‘123qwe’; //web02
在第一台web 上安裝 discuz
yum 安裝php
apache 配置php
vim /etc/httpd/conf/httpd.conf
找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在後面添加:
AddType application/x-httpd-php .php(使Apcche支援PHP)
AddType application/x-httpd-php-source .php5
找到: <IfModule dir_module> DirectoryIndex index.html </IfModule>
添加: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
找到: #ServerName www.example.com:80
修改為: ServerName 127.0.0.1:80或者ServerName localhost:80 記得要去掉前面的“#”
yum -y install php
yum -y install php-mysql
service httpd restart
setenforce 0
在web頁面中國呢有很多的檔案需要修改權限,可以使用以下做法: 首先把web頁面中的檔案内容複制粘貼到 aaaa檔案中,然後,
awk ‘{print $1}’ aaaa | xargs -I {} chmod 777 {}
在第二台web 上
打包第一台 bbs目錄下所有檔案; 傳到第二台,解壓,就ok了
負載均衡叢集LB
硬體: F5
軟體: lvs haproxy
LVS 項目
章文嵩建立
lvs 可以實作高可用, 可伸縮的Web, Mail, Cache 和Media 等網絡服務
LVS 叢集組成
前端: 負載均衡層
由一台或多台負載排程器構成
中間: 伺服器群組層
由一組實際運作應用服務的伺服器組成
底端: 資料共享存儲層
提供共享存儲空間的存儲區域
LVS 術語
Director Server: 排程伺服器
—将負載分發到Real Server 的伺服器
Real Server: 真實伺服器
—真正提供應用服務的伺服器
VIP: 虛拟IP位址
—公布給使用者通路的虛拟IP位址
RIP :真實IP位址
— 叢集節點上使用的IP位址
DIP : 排程器連接配接節點伺服器的IP位址
模式:
NAT :
排程器伺服器 : 有兩個網卡(公網IP,内網IP)
能節省IP位址,(大多使用内網IP);
大并發時,排程器的性能成為瓶頸
DR:
排程器 伺服器 隻有一個網卡
tun模式:
通過隧道方式實作
使用很少
lvs 目前實作了10種排程算法
常用排程算法4種
—-輪詢 (Round Robin)
—-權重輪詢(Weighted Round Robin)
—最少連接配接 (Least Connections)
—權重最少連接配接(Weighted Least Connections)
- 準備lvs 伺服器
2. 修改web伺服器 的網關為 4.4; 排程器是網關
setup
3. 打開排程器的路由轉發功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
4. 安裝lvs
vim /etc/yum.repos.d/192.168.4.254_rhel6_7_Server.repo
[LoadBalancer]
name=LoadBalancer
baseurl = ftp ://192.168.4.254/rhel6_7/LoadBalancer
enabled=1
gpgcheck=0
yum -y install ipvsadm
ipvsadm -Ln //檢視lvs排程
ipvsadm -A -t 192.168.29.168:80 -s wrr //vip
ipvsadm -a -t 192.168.29.168:80 -r 172.16.93.140 -m -w 2 //-m nat模式
ipvsadm -a -t 192.168.29.168:80 -r 172.16.93.141 -m -w 2 //-m nat模式
真機通路 192.168.29.168 觀察
測試: 如果 把 web02 stop httpd 呢? 通路 192.168.29.168
結果:它還是一會web01, 一會 web02, 顯然通路web02 浏覽器 會說 “不能連接配接到伺服器”。正式環境這樣肯定不行的!使用者無法正常使用網站。
說明: lvs 沒有做服務終止錯誤檢查
問題解決: 結合keeplived
nmap -n -st 192.168.4.2 -p 80 2> /dev/null | grep open
ipvsadm -Ln | egrep ‘192\.168\.4\.3’
腳本
#!/bin/bash
VIP=192.168.29.170:80
RIP1=172.16.93.140
RIP2=172.16.93.141
while [ 1 ]
do
for IP in $RIP1 $RIP2
do
#IP=$RIP2
web_stat=$(nmap -n -sT $IP -p 80 2>/dev/null | grep open)
ip_in_lvs=$(ipvsadm -Ln | grep $IP)
if [ -z "$web_stat" -a -n "$ip_in_lvs" ]; then
echo 'stop '"$IP"
ipvsadm -d -t $VIP -r $IP
elif [ -n "$web_stat" -a -z "$ip_in_lvs" ]; then
echo 'start '"$IP"
ipvsadm -a -t $VIP -r $IP -m
fi
done
sleep 5
done
: 9,16s/^/ /
bash monitor_web.sh &
watch -n 1 ipvsadm -Ln
NAT 是 IP 層次,ipvsadm 工作在ip層 tpl01 80端口并沒有啟動服務!它隻是轉發IP資料包(也許會有小改動!)到 web01 或web02
添加一條路有規則:
tpl01 讓其可以通路外網
route add default gw 172.16.93.2