修改IP地址 修改主機名
兩臺機器上開啓nginx,保證能訪問論壇 第二臺機器上,關閉mariadb 修改配置文件:config/config_global.php config/config_ucenter.php uc_server/data/config.inc.php 測試,保證兩臺機器都能正常訪問到論壇。
測試:php
[root@wangzb03 ~]# /etc/init.d/mysqld stop [root@wangzb03 ~]# chkconfig mysqld off [root@wangzb03 ~]# systemctl stop httpd [root@wangzb03 ~]# systemctl enable nginx //nginx開機啓動 wangzb03上須要訪問登陸wangzb01上數據庫 [root@wangzb03 ~]#mysql -ubbs -pmysql -h192.168.153.133 若是報錯不被容許,則須要在wangzb01機器上受權 [root@wangzb01 ~]# mysql -uroot -pmysql MariaDB [(none)]> show grants for 'bbs'@'127.0.0.1'; +------------------------------------------------------------------------------------------------------------+ | Grants for bbs@127.0.0.1 | +------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'bbs'@'127.0.0.1' IDENTIFIED BY PASSWORD '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA' | | GRANT ALL PRIVILEGES ON `bbs`.* TO 'bbs'@'127.0.0.1' | +------------------------------------------------------------------------------------------------------------+ 執行受權語句給wangzb03機器ip MariaDB [(none)]> GRANT USAGE ON *.* TO 'bbs'@'192.168.153.135' IDENTIFIED BY PASSWORD '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON `bbs`.* TO 'bbs'@'192.168.153.135'; MariaDB [(none)]> flush privilege; 配置Windows下C:\Windows\System32\drivers\etc\hosts文件中域名解析,打開瀏覽器輸入域名bbs.wangzb.cc訪問論壇,須要確保wangzb01和wangzb03均可以訪問(經過查看日誌/data/logs/bbs.access.log)。 [root@wangzb01 ~]# tail -f /data/logs/bbs.access.log [root@wangzb03 ~]# tail -f /data/logs/bbs.access.log 點擊瀏覽器論壇界面查看日誌bbs.access.log是否有打印出來,若是有說明訪問該主機成功。注意若是切換Windows下的hosts域名解析後,須要重啓瀏覽器清楚緩存,否則日誌仍是記錄到切換前的主機裏。
幾個專業術語:DIR(分發器)DIP(DIR的IP) RS(真實服務器) VIP(虛擬IP,也是提供服務的IP)
用iptables的NAT表實現網絡地址轉換,數據包目標IP爲DIP,DIR將目標IP地址轉換爲RS的IP, 這樣請求的包就到了RS上,而RS返回的數據包原本是到DIP的,也會通過DIR轉換, 把目標IP轉換爲客戶端的IP
DIR會改請求報文中的MAC地址,原本請求的包中的MAC地址爲DIR的MAC地址,可是卻被修改爲了 RS的MAC地址,這樣數據包就到了RS上。因爲數據包的源IP爲客戶端IP,因此它在返回數據包的時候, 能夠直接發給客戶端,而再也不通過DIR。
客戶端請求的數據包發給DIR,DIR會近一步把包封裝,加上了一個新的目標IP(RS的IP),這樣 數據包到了RS後再將封裝的包拆開,得到原始數據包。返回數據包的時候,也是直接發給了客戶端。
調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上, 它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。
調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。 這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況, 並動態地調整其權值。
調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。 若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。
在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能, 具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況, 並動態地調整其權值。
"基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。 該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載, 將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載, 則用"最少連接"的原則選出一個可用的服務 器,將請求發送到該服務器。
"帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。 它與LBLC算法的不一樣之處是它要維護從一個 目標IP地址到一組服務器的映射, 而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址 對應的服務 器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載, 將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一 臺服務器, 將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改, 將最忙的服務器從服務器組中刪除,以下降複製的 程度。
"目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表 找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。
"源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器, 若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。
三臺機器: wangzb01(133) -> RS1 wangzb03(135) -> RS2 wangzb02(35) -> DIR VIP: 35
yum install -y ipvsadm
vim /usr/local/sbin/lvs_dr.sh //內容以下html
#! /bin/bash ipv=/usr/sbin/ipvsadm vip=192.168.153.35 rs1=192.168.153.133 rs2=192.168.153.135 #注意這裏的網卡名字 #之因此要先重啓ens33網卡,是爲了防止腳本重複執行時和以前的配置衝突 ifdown ens33 ifup ens33 #增長ens33:1虛擬網卡,並把vip配置在ens33:1上 ifconfig ens33:1 $vip broadcast $vip netmask 255.255.255.255 up #增長路由 route add -host $vip dev ens33:1 #-C表示清空以前的規則 $ipv -C #-A表示增長規則,-t指定vip以及port,-s指定調度算法,這裏還有一個-p選項,後面跟時間(單位s),表示保持長鏈接 $ipv -A -t $vip:80 -s wrr #-a表示增長rs,-r指定具體的rsip和port,-g表示使用dr模式(-i表示ip tunnel模式,-m表示NAT模式),-w指定權重 $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 # 腳本內容到此結束
sh /usr/local/sbin/lvs_dr.shmysql
檢查:ip addlinux
vim /usr/local/sbin/lvs_rs.sh //內容以下:nginx
#!/bin/bash vip=192.168.153.35 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端 #參考文檔https://www.imooc.com/article/79661 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sh /usr/local/sbin/lvs_rs.sh算法
windows hosts 瀏覽器sql
linux curl vip數據庫