第十七周作業

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
下一篇 2017-05-28

相關推薦

  • 網卡名稱更改

    網卡是計算機進行網絡通信的必須的設備。在CentOS6及其更早的系統中,網卡設備在系統中的名稱命名為eth#(#為0,1,2…之類的數字)。在內核版本為3.0.0及其以后的Linux發行版中,網卡設備在系統中名稱變得很長,變得不好識別以及不利于管理。為了更好的管理,我們將新的網絡設備命名改為傳統的命名。 網卡名稱更改 在CentOS系統中操作 在RHEL7系…

    Linux干貨 2016-11-23
  • M20 – 1- 第二周(2):硬鏈接與軟鏈接的區別

    在講硬鏈接與軟鏈接的區別之前,我們首先了解inode,了解inode讓我們更容易理解何為硬鏈接和軟鏈接。 inode概念        何為inode,inode就是索引節點,而inode表中存放著文件的元數據,何為元數據,元數據就是文件名稱、大小、時間戳、所有者、權限、inode等信息,而文件中的內容就是文件的數據,…

    Linux干貨 2016-08-02
  • N25第一周作業

    一.計算機基礎知識     1.計算機是什么?         計算機是一種能夠按照指令對各種信息進行自動加工和處理的電子設備     2.計算機的組成?       &…

    Linux干貨 2016-12-06
  • 計劃任務與啟動流程

    一、任務計劃 未來的某時間點執行一次任務:    at:在指定的時間執行任務    batch:系統自行選擇空閑時間去執行此處指定的任務周期性運行某任務:    cron:在指定的時間執行任務 1、at任務at [option] TIME  常用選項:&nbs…

    Linux干貨 2016-09-13
  • N21沉舟第六周作業

    N21沉舟第六周作業 1、  復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit %s/^[[:space:]]\+/#&…

    Linux干貨 2016-08-08
  • Linux進程管理常用命令(二)

       htop命令:         選項:         -d # : 指定延遲時間間隔;         -u  UserName :僅顯示指定用戶的進程;       &n…

    Linux干貨 2017-01-05

評論列表(1條)

  • luoweiro
    luoweiro 2017-06-26 22:33

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

欧美性久久久久