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

[经验分享] 利用LVS

[复制链接]

尚未签到

发表于 2019-1-5 09:47:43 | 显示全部楼层 |阅读模式
  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
  

  大致拓扑图:
  
  注意:
  (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交替被访问
  

  客户端测试


  循环测试
     ~]# 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
  客户端测试

  -------------------------------------------------------------------------------------------
  
  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
  大致拓扑图:

  注意:
    和上面的nat模型一样需要注意时间同步和防火墙及SElinux的设置,在这里就不再赘述。
  调度器主机:
    安装一个仅主机的网卡地址为172.16.1.100,此ip地址为DIP
    VIP配置在接口的别名上,如下配置
    [root@zj02 ~]# ifconfig eno16777736:0 172.16.1.2 netmask 255.255.255.255  broadcast 172.16.1.2 up
  
   安装lvs软件包 yum -y install ipvsadm
  

   集群配置
    设置FWH规则:
     [root@zj02 ~]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -d 172.16.1.2 -j MARK --set-mark 6
     [root@zj02 ~]# ipvsadm -A -f 6 -s rr
     [root@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.3:80 -g
     [root@zj02 ~]# ipvsadm -a -f 6 -r 172.16.1.4:80 -g
     [root@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 &quot;rs1.zrs.com&quot; > /var/www/html/index.html
   echo &quot;rs2.zrs.com&quot; > /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 &quot;Usage: $(basename $0) { start | stop }&quot;
  ;;
  esac
   ~]# chmod +x arp_para.sh ///赋予执行权限
   ~]# ./arp_para.sh start  ///运行脚本环境即可配置成功
  客户端测试
  


  


  nfs共享存储服务器配置
    和上面的nat模型基本一样,在这里就不再赘述,需要注意的是更改/etc/exports此文件中的网段为本次dr模型实验的网段。
  最后同样将共享目录分别挂载到rs1和rs2中,可以用mount命令查看挂载信息:

  客户端测试





运维网声明 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.iyunv.com/thread-659539-1-1.html 上篇帖子: LVS nat模式和DR模式简介 下篇帖子: ipvsadm命令参考(LVS)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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