设为首页 收藏本站
查看: 1346|回复: 0

[经验分享] 利用LVS-NAT和DR模型分别负载均衡一个php应用

[复制链接]

尚未签到

发表于 2017-10-25 08:57:25 | 显示全部楼层 |阅读模式
1.使用NAT模型的TCP协议类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;
2.使用DR模型的FWM类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;
注意:以上两个集群需要考虑两个问题:
1) 是否需要会话保持;
2) 是否需要共享存储;
-------------------------------------------------------------------------------------------
1.使用NAT模型负载均衡wordpress

环境部署:
serverA :调度器     外网:172.16.1.2   内网:192.168.100.7
serverB :rs1       内网:192.168.100.8
serverC :rs2       内网:192.168.100.9
serverD :nfs服务器   内网:192.168.100.6


大致拓扑图:
80050122e29f033afaee58e09baafdf1.png
注意:
(1)配置之前把所有主机的防火墙和SElinux关闭,方便实验
   ~]# iptables -F && setenforce 0 && systemctl stop firewalld.service
(2)同步时间
  时间同步是最重要的环节,Director和后台的RealServer的时间必须同步,并且时间差小于1秒钟。 本次我们使用Director服务器作为时间服务器,全部都向它来同步时间。
   ~]# service ntpd restart # 重启ntp服务器
       Shutting down ntpd: [ OK ]
       Starting ntpd: [ OK ]
   ~]# ntpdate 192.168.100.7 # 客户端同步三台都要同步这里我们就不多说了

rs1配置
安装服务 yum -y install httpd php php-mysql
设置网关
  route add default gw 192.168.100.7
配置主页信息
  echo "rs1.zrs.com" > /var/www/html/index.html
启动服务
  systemctl start httpd.service
查看一下
~]# curl http://localhost
   rs1.zrs.com

rs2配置
安装服务 yum -y install httpd php php-mysql
设置网关
  route add default gw 192.168.100.7
配置主页信息
  echo "rs2.zrs.com" > /var/www/html/index.html
启动服务
  systemctl start httpd.service
查看一下
~]# curl http://localhost
   rs2.zrs.com

调度器配置
  测试rs1和rs2主机能否正常通信:
   ping 192.168.100.8
   ping 192.168.100.9
   curl http://192.168.10.8
   curl http://192.168.10.9
  安装lvs软件包 yum -y install ipvsadm
  开启核心转发功能
  ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
  创建集群
  ~]# ipvsadm -A -t 172.16.1.2:80 -s rr
  ~]# ipvsadm -a -t 172.16.1.2:80 -r 192.168.100.8 -m
  ~]# ipvsadm -a -t 172.16.1.2:80 -r 192.168.100.9 -m
  查看集群
  ~]# ipvsadm -l -n
   IP Virtual Server version 1.2.1 (size=4096)
   Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.16.1.2:80 rr
  -> 192.168.100.8:80             Masq    1      0          0   
  -> 192.168.100.9:80             Masq    1      0          0     

由于这个集群使用的是rr(轮询)算法,所以rs1和rs2交替被访问


客户端测试
ee91477c9e9ba7822b24da77a5e687e9.png
d6703d65b968673b1389966f383a8191.png
循环测试
   ~]# for i in {1..10};do curl http://172.16.1.2 ;done
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com
rs1.zrs.com
rs2.zrs.com

可以保存一下规则,重启后可继续适用
  ipvsadm -S > /etc/sysconfig/ipvsadm.web
重载规则
  ipvsadm -R < /etc/sysconfig/ipvsadm.web

nfs服务器配置
1.安装所需软件包
  yum -y install nfs-utils
2.准备用户apache(访问NFS服务时映射为的用户)
  useradd -u 48 apache
3.准备需要导出的目录,且其属主、属组为apahce
  install -o apache -g apache -d /data/application/web
4.下载wordpress程序包并解压至/data/application/web目录下,并将其属主、属组改为apache,wordpress目录下的wp-content目录的权限改为777(上传图片时需要写权限)
unzip wordpress-4.3.1.-zh_CN.zip
mv wordpress /data/application/web
cd /data/application/web
chown -R apache.apache wordpress
chmod 777 wordpress/wp-content
5.在wordpress目录下,修改配置文件 :
mv wp-config-sample.php wp-config.php
vim wp-config.php  
  /** WordPress数据库的名称*/
    define('DB_NAME', 'wpdb');

    /** MySQL数据库用户名 */
    define('DB_USER', 'wpuser');

    /** MySQL数据库密码 */
    define('DB_PASSWORD', '123456');

    /** MySQL主机 */
    define('DB_HOST', '192.168.100.6');

6.编辑nfs配置文件,将/data/application/web目录导出,允许192.168.10.0/24网段连接,导出属性为rw,async,用户映射为apache。
  vim /etc/exports
    /data/application/web 192.168.10.0/24(rw,async,anonuid=48,anongid=48)
   
7.启动mysql服务,创建数据库wpdb和dzdb,并分别授权用户wpuser对wpdb数据库下的所有表拥有所有权限,dzuser对dzdb数据库下的所有表拥有所有权限;
  yum -y install mariadb-server php-mysql
  systemctl start mariadb.service
  MariaDB [(none)]> CREATE DATABASE wpdb;
  MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'192.168.%.%' identified by '123456';
  MariaDB [(none)]> FLUSH PRIVILEGES;

rs1和rs2
创建session目录,存放会话,更改属组属主为apache
  ~]# ll -d /var/lib/php/session/
   drwxr-xr-x. 2 apache apache 4096 10月 21 10:28 /var/lib/php/session/
将D主机nfs服务器上导出的目录挂载至/var/www/html目录下
  mount.nfs 192.168.100.6:/data/application/web /var/www/html

客户端测试
e776401c92b9a325d6d22d4387c17e99.png
-------------------------------------------------------------------------------------------

2.使用DR模型的FWM类型的lvs服务负载均衡wordpress

环境部署:
serverA :调度器      VIP:172.16.1.2  DIP:172.16.1.100
serverB :rs1        RIP1:172.16.1.3
serverC :rs2        RIP2:172.16.1.4
serverD :nfs服务器    nfs:172.16.1.5
大致拓扑图:
76d35b0d9baf59af63ae2677524a0a89.png
注意:
  和上面的nat模型一样需要注意时间同步和防火墙及SElinux的设置,在这里就不再赘述。

调度器主机:
  安装一个仅主机的网卡地址为172.16.1.100,此ip地址为DIP
  VIP配置在接口的别名上,如下配置
  [iyunv@zj02 ~]# ifconfig eno16777736:0 172.16.1.2 netmask 255.255.255.255  broadcast 172.16.1.2 up
c9a43c689079fd6b2b0f72d040a3523a.png
安装lvs软件包 yum -y install ipvsadm


集群配置
  设置FWH规则:
   [iyunv@zj02 ~]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -d 172.16.1.2 -j MARK --set-mark 6
   [iyunv@zj02 ~]# ipvsadm -A -f 6 -s rr
   [iyunv@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.3:80 -g
   [iyunv@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.4:80 -g
   [iyunv@zj02 ~]# ipvsadm -ln
   IP Virtual Server version 1.2.1 (size=4096)
   Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
     FWM  6 rr
   -> 172.16.1.3:80                Route   1      0          0   
   -> 172.16.1.4:80                Route   1      0          0

开启核心转发功能
   ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
  
rs1&rs2配置
安装服务 yum -y install httpd php php-mysql
配置主页信息
   echo "<h1>rs1.zrs.com</h1>" > /var/www/html/index.html
   echo "<h1>rs2.zrs.com</h1>" > /var/www/html/index.html
启动服务
   systemctl start httpd.service
在DR模型中,各个主机均需要配置VIP;为了解决地址冲突可以修改对应的内核参数,来限制ARP的通告和应答的级别
  arp_ignore:
   0:默认值,对于从任何网络接口接收到对本机任意IP地址的ARP查询请求均予以回应;
   1:只应答目标IP地址是入站接口上配置的IP地址所在网段的IP地址的ARP请求;
   2:只应答目标IP地址是入站接口上配置的IP地址所在网段的IP地址的ARP请求,且来访IP地址也必须与该接口的IP地址在同一子网中;
   3:不响应该网络接口的ARP请求,而只对设置为全局的IP地址做应答;
   4-7:保留;
   8:不应答所有的ARP请求;
arp_announce:

   0:默认值,将本机所有接口的信息向所有接口所连接的网络中通告;
   1:尽量避免向与本接口不同网络中的其他接口通告;
   2:绝对避免向非本网络的主机通告;

可以用脚本实现
~]# vim arp_para.sh

#!/bin/bash
#
VIP=172.16.1.2
MASK=255.255.255.255

case $1 in
start)
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

ifconfig lo:0 $VIP netmask $MASK  broadcast $VIP up

route add -host $VIP dev lo:0
;;
stop)
ifconfig lo:0 down

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) { start | stop }"
;;
esac

~]# chmod +x arp_para.sh ///赋予执行权限
~]# ./arp_para.sh start  ///运行脚本环境即可配置成功

客户端测试

49f74c96f395815a30a32890c37fd181.png
87cd8bacb5534ed936a14057153a0763.png



nfs共享存储服务器配置
  和上面的nat模型基本一样,在这里就不再赘述,需要注意的是更改/etc/exports此文件中的网段为本次dr模型实验的网段。

最后同样将共享目录分别挂载到rs1和rs2中,可以用mount命令查看挂载信息:
ebfc50bc9d8838b0039e197ed5d243e5.png
客户端测试
3aaa0b2ac6eb190d311ca03eafe76985.png


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-405855-1-1.html 上篇帖子: LVS-DR负载均衡RIP和VIP在不同网络的实现 下篇帖子: 集群lvs-dr应用之wordpress(共享后台MySQL存储)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表