天天看點

LVS負載均衡搭建

LVS

搭建

  1. 準備 兩台 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)

  1. 準備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

繼續閱讀