第十七周作業

1、結合圖形描述LVS的工作原理;

工作方式:

LVS由前端的負載均衡器(Load Balancer,LB)和后端的真實服務器(Real Server,RS)群組成。RS間可通過局域網或廣域網連接。LVS的這種結構對用戶是透明的,用戶只能看見一臺作為LB的虛擬服務器(Virtual Server),而看不到提供服務的RS群。當用戶的請求發往虛擬服務器,LB根據設定的包轉發策略和負載均衡調度算法將用戶請求轉發給RS。RS再將用戶請求結果返回給用戶。

工作原理:

第十七周作業

1.當客戶端的請求到達負載均衡器的內核空間時,首先會到達PREROUTING鏈。
2.當內核發現請求數據包的目的地址是本機時,將數據包送往INPUT鏈。
3.LVS由用戶空間的ipvsadm和內核空間的IPVS組成,ipvsadm用來定義規則,IPVS利用ipvsadm定義的規則工作,IPVS工作在INPUT鏈上,當數據包到達INPUT鏈時,首先會被IPVS檢查,如果數據包里面的目的地址及端口沒有在規則里面,那么這條數據包將被放行至用戶空間。
4.如果數據包里面的目的地址及端口在規則里面,那么這條數據報文將被修改目的地址為事先定義好的后端服務器,并送往POSTROUTING鏈。
5.最后經由POSTROUTING鏈發往后端服務器。

幾種常用模型:

第十七周作業

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址為VIP。
②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將客戶端請求報文的源MAC地址改為自己DIP的MAC地址,目標MAC改為了RIP的MAC地址,并將此包發送給RS。
③.RS發現請求報文中的目的MAC是自己,就會將次報文接收下來,處理完請求報文后,將響應報文通過lo接口送給eth0網卡直接發送給客戶端。
優點:返回請求無需經過調度器,效率高
缺點:
1.配置復雜,需要修改內核參數使lo接口的VIP不能響應本地網絡內的arp請求;
2.負載均衡器的DIP網卡與各RS必須在一個局域網中,不能跨網段;
3.無法做端口轉換。


第十七周作業

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP(客戶端IP),后面統稱為CIP),目標地址為VIP(負載均衡器前端地址,后面統稱為VIP)。
②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將客戶端請求報文的目標地址改為了后端服務器的RIP地址并將報文根據算法發送出去。
③.報文送到Real Server后,由于報文的目標地址是自己,所以會響應該請求,并將響應報文返還給LVS。
④.然后lvs將此報文的源地址修改為本機并發送給客戶端。

優點:
1.RS端配置簡單,只需配置私網IP即可;
2.支持端口轉換。
缺點:由于請求與響應都經過調度器,所以性能較差,容易出現瓶頸;


第十七周作業

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址為VIP。
②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將在客戶端請求報文的首部再封裝一層IP報文,將源地址改為DIP,目標地址改為RIP,并將此包發送給RS。
③.RS收到請求報文后,會首先拆開第一層封裝,然后發現里面還有一層IP首部的目標地址是自己lo接口上的VIP,所以會處理次請求報文,并將響應報文通過lo接口送給eth0網卡直接發送給客戶端。
優點:
1.返回請求無需經過調度器,效率高;
2.負載均衡器與RS之間可以跨網段,甚至跨公網。
缺點:
1.配置復雜,需要修改內核參數使lo接口的VIP不能響應本地網絡內的arp請求;
2.無法做端口轉換。

2、搭建一套LVS-DR模型的高性能集群,并實現以下功能:
   (1)、wordpress程序通過nfs共享給各個realserver;
   (2)、后端realserver中的nginx和php分離

第十七周作業

1. 在兩臺rs節點上分別安裝nginx

]# yum install nginx nfs-utils -y                                    #安裝nfs-utils是為了后面能夠正常掛在nfs分區

2. 安裝Mariadb

]# yum install mariadb-server -y

3. 安裝php-fpm和nfs

]# yum install php-fpm php-mysql php-mbstring php-gd php-xml nfs-utils -y 

4. 在兩個rs節點上分別修改nginx配置文件,添加下面內容:

]# vim /etc/nginx/nginx.conf
...
location / {
            root           /data/www;                                 #定義根目錄
            index          index.php index.html index.htm;            #將index.php放在第一位置
        }

        location ~ \.php$ {
            root           /data/www;
            fastcgi_pass   192.168.0.24:9000;                         #指定php服務器地址和端口
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
...

5.在php服務器上修改php-fpm配置文件

]# vim /etc/php-fpm.d/www.conf                                                                
listen = 192.168.0.24:9000                                            #設置監聽地址和端口
#listen.allowed_clients = 127.0.0.1                                   #默認只允許本機訪問,注釋該行后表示允許所有地址到本機的連接
]# systemctl start php-fpm.service

6. 在php服務器上配置nfs服務

]# mkdir -p /data/www
]# vim /etc/exports
/data/www 192.168.0.0/24(rw,no_root_squash)                           #將/data/www通過nfs服務共享出去
]# systemctl start nfs.service

7.在兩個rs節點上創建共享目錄并掛在共享盤

]# mkdir -p /data/www/
]# mount -t nfs 192.168.0.24:/data/www /data/www
]# systemctl start nginx.service

8.在php服務器上創建測試頁,并在瀏覽器上分別打開rs1和rs2的主頁,檢查nginx和php的聯動

]# vim /data/www/index.php
<?php
        phpinfo();
?>

9. 在MySQL服務器上設置必要的優化參數并重新初始化數據文件目錄

]# vim /etc/my.cnf
[mysqld]
...
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON

]# mkdir -p /mydata/data
]# mysql_install_db --user=mysql --datadir=/mydata/data
]# systemctl start mariadb.service

10.測試php與Mariadb聯動

]# mysql
MariaDB [(none)]> grant all on *.* to 'root'@'192.168.0.%' identified by 'magedu';                 #在mysql中創建遠程連接賬號用于聯動測試
MariaDB [(none)]> flush privileges;

]# vim /data/www/index.php              #在php服務器上創建測試頁面
<?php
        $conn = mysql_connect('192.168.0.25','root','magedu');
        if ($conn)
                echo "OK";
        else
                echo "Failure";
?>

11. 在MySQL中創建wordpress數據庫和用戶

MariaDB [(none)]> create database wpdb;                                                  
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.0.%' identified by 'magedu';   
MariaDB [(none)]> flush privileges;

12.在php服務器上部署wordpress

]# cd /data/www
]# unzip wordpress-3.3.1-zh_CN.zip
]# cd wordpress
]# cp wp-config-sample.php wp-config.php          #生成wordpress配置文件
]# vim wp-config.php
define('DB_NAME', 'wpdb');                        #修改為實際庫名

/** MySQL 數據庫用戶名 */
define('DB_USER', 'wpuser');                      #修改為實際用戶名

/** MySQL 數據庫密碼 */
define('DB_PASSWORD', 'magedu');                  #修改為實際密碼

/** MySQL 主機 */
define('DB_HOST', '192.168.0.25');               #修改為實際IP

13.使用瀏覽器完成后續的圖形化安裝步驟

瀏覽器輸入:http://192.168.0.21/wordpress/wp-admin/install.php

第十七周作業

14. 在lvs服務器上安裝lvs

]# yum install ipvsadm -y

15. 在lvs物理網卡上配置VIP

]# ifconfig eno16777736:0 192.168.0.20 netmask 255.255.255.255 broadcast 192.168.0.20

16.在兩臺rs上修改內核參數,禁止lo對VIP的廣播做響應

]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 
]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce

17.在兩臺rs的lo網卡上配置VIP并添加到lvs的vip的路由

]# ifconfig lo:0 192.168.0.20 netmask 255.255.255.255 broadcast 192.168.0.20
]# route add -host 192.168.0.20 dev lo:0

18.在lvs上配置ipvsadm規則

]# ipvsadm -A -t 192.168.0.20:80 -s rr
]# ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.22 -g -w 1 
]# ipvsadm -a -t 192.168.0.20:80 -r 192.168.0.23 -g -w 1 
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.20:80 rr
  -> 192.168.0.22:80              Route   1      0          0         
  -> 192.168.0.23:80              Route   1      0          0     

19.在瀏覽器中訪問lvs的vip,測試是否成功

第十七周作業

3、基于heartbeat v2 crm實現HA LAMP組合;要求,部署wordpress,用于編輯的文章中的任何數據在節點切換后都能正常訪問;

第十七周作業

1. 在兩臺rs節點上分別安裝httpd,php并配置

]# yum install httpd php php-mysql php-mbstring php-gd php-xml nfs-utils -y 
]# vim /etc/httpd/conf/httpd.conf
...
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
...
AddType application/x-httpd-php .php
]# /etc/init.d/httpd start

2.配置nfs服務器

]# mkdir -p /data/www
]# vim /etc/exports
/data/www 192.168.0.0/24(rw,no_root_squash)                          
]# systemctl start nfs.service

3.安裝并配置mariadb服務器

]# vim /etc/my.cnf
[mysqld]
...
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON

]# mkdir -p /mydata/data
]# mysql_install_db --user=mysql --datadir=/mydata/data
]# systemctl start mariadb.service
]# mysql
MariaDB [(none)]> create database wpdb;                                                  
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.0.%' identified by 'magedu';   
MariaDB [(none)]> flush privileges;

4.在nfs服務器上修改wordpress配置文件

]# cd /data/www
]# unzip wordpress-3.3.1-zh_CN.zip
]# cd wordpress
]# cp wp-config-sample.php wp-config.php          
]# vim wp-config.php
define('DB_NAME', 'wpdb'); 

/** MySQL 數據庫用戶名 */
define('DB_USER', 'wpuser');    

/** MySQL 數據庫密碼 */
define('DB_PASSWORD', 'magedu');

/** MySQL 主機 */
define('DB_HOST', '192.168.0.25'); 

5.在兩個rs上分別掛在nfs目錄

]# mount -t nfs 192.168.0.24:/data/www /var/www/html

6.使用瀏覽器完成后續的圖形化安裝步驟,確保通過每個rs節點都能正常訪問wordpress

7.配置heartbeat v2 crm的準備工作

1)各節點hosts中添加自己和對端節點的名稱解析

2)各節點之間建立ssh互信關系

3)各節點之間時間同步

8.在各rs節點安裝heartbeat

]# yum install net-snmp-libs libnet PyXML libtool-ltdl gnutls gettext -y
]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

9.在兩個rs節點上分別配置heartbeat

]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys} /etc/ha.d/
]# cd /etc/ha.d/
]# chmod 600 authkeys
]# vim authkeys
auth2
#1 crc
2 sha1 1q2w3e4R
#3 md5 Hello!

]# vim /etc/ha.d/ha.cf
logfile /var/log/ha-log                 #只用heartbeat日志
#logfacility    local0                  #禁用rsyslog的local0
mcast eth0 225.23.190.1 694 1 0         #設定組播地址
keepalive 2                             #監聽頻率為2秒
deadtime 30                             #死亡判定時間為30秒
warntime 10                             #異常警告時間為10秒
auto_failback on                        #修復后自動上線
node node1.magede.com                   #設置節點1
node node2.magedu.com                   #設置節點2
ping 192.168.0.1                        #設定第三方仲裁設備
crm on                                  #開啟crm,同時也會禁用haresources

10.打開hb_gui圖形界面

]# echo "magedu"|passwd --stdin hacluster                           #為hacluster設定密碼,用于后面圖形化登錄時身份驗證
]# service heartbeat start;ssh node2 service heartbeat start
]# hb_gui &

 輸入hacluster密碼后進入hb_gui主界面

第十七周作業

創建資源組ha_wordpress

第十七周作業

創建資源webip,用于啟停VIP

第十七周作業

創建資源nfs,用于掛載nfs共享磁盤

第十七周作業

創建資源webserver,用于啟停httpd服務

第十七周作業

創建colocation約束,用于將不同資源綁定在一起

第十七周作業

創建約束nfs_with_webip,即nfs服務必須與webip在同一個節點上

第十七周作業

創建約束webserver_with_nfs,即webserver必須與nfs在同一個節點上

第十七周作業

創建順序約束,用來指定資源服務的啟停順序

第十七周作業

創建約束nfs_after_webip,即nfs必須在webip啟動之后才能啟動

第十七周作業

創建約束webserver_after_nfs,即webserver服務必須在nfs服務啟動之后才能啟動

第十七周作業

啟動資源ha_wordpress之后,可以發現所有節點均啟動在節點2上,此時訪問http://192.168.0.20/wordpress正常。

第十七周作業

將節點2置為standby

第十七周作業

可以發現所有的資源均已漂移到節點1上,再次訪問http://192.168.0.20/wordpress,依然正常,說明高可用實現成功。

第十七周作業

原創文章,作者:N26-西安-方老喵,如若轉載,請注明出處:http://www.www58058.com/76289

(0)
N26-西安-方老喵N26-西安-方老喵
上一篇 2017-05-27 13:39
下一篇 2017-05-28 16:58

相關推薦

  • linux 的套接字

    套接字是一種通信機制,憑借這種機制,客戶/服務器系統的開發工作既可以在本地單機上進行,也可以跨網絡進行。 套接字的特性有三個屬性確定,它們是:域(domain),類型(type),和協議(protocol)。套接字還用地址作為它的名字。地址的格式隨域(又被稱為協議族,protocol family)的不同而不同。每個協議族又可以使用一個或多個地址族定義地址格…

    Linux干貨 2016-08-18
  • Network Teaming網絡組總結

    一、Network Teaming網絡組的創建 第一步;準備工作,建立兩個網絡接口eth0、eth1,把原有網卡配置文件刪除; 命令:cd /etc/sysconfig/network-scripts                rm -rf ifcfg-* &nbs…

    2017-03-26
  • N23-北京-阿來

           我是阿來,我參加了馬哥Linux運維網絡班,從2016年9月開始我將跟隨馬哥學習Linux技術。我的學習宣言是:學習的路,就在腳下,一步一個腳印,領路的人,就這這里,一天一點進步!

    Linux干貨 2016-09-12
  • 聯通電信雙鏈路內網VRRP+BFD&&PPTP+MYSQL+FreeRadius實現IDC堡壘機連接IDC機房

    一、具體需求與實現 1、多wan:兩條寬帶接入鏈路,使用VRRP+BFD技術,實現鏈路冗余; 2、IDC機房遠程管理和登錄限制:使用PPTP+freeRadius+mysql實現VPN,限制指定網段或IP進行撥號認證登錄IDC機房,并編寫腳本檢查非法用戶登錄IDC機房服務器情況; 3、內網VLAN劃分:利于安全管理、IP分流和帶寬限制; 4、內網監控:使用N…

    Linux干貨 2016-08-22
  • Linux中/etc目錄下常用的配置文件及其含義總結

         在linux中有一個很重要的思想就是一切皆文件,也就是說所有的系統參數的配置都是保存在各種各樣的配置文件當中的,這點Linux和Windows有很大的差別。      因為Linux中有眾多配置文件,學習起來難免會不容易記憶,所以在此把一些常用的配置文件記錄下來,做一個歸納總結。根據FHS…

    Linux干貨 2017-03-26
  • 一起學DNS系列(十三)圖文詳說A、CNAME、MX和NS記錄

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/226194    前面用了12個小節對DNS的基礎、以及Windows的DNS系統作了較詳細的描述,下面的幾節主要是說一些有關DNS應用方面…

    2015-03-18

評論列表(1條)

  • luoweiro
    luoweiro 2017-06-26 22:33

    非常贊,尤其是lvs集中模型的數據流走向,其實理清楚里面的網絡地址和mac地址轉換過程,對于以后排查lvs相關的故障就輕而易舉了。

欧美性久久久久