第十七周作业

栏目: 数据库 · Mysql · 发布时间: 7年前

内容简介:第十七周作业

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,依然正常,说明高可用实现成功。

第十七周作业


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms in Java

Data Structures and Algorithms in Java

Robert Lafore / Sams / 2002-11-06 / USD 64.99

Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具