liyao20060101 发表于 2019-1-3 09:22:33

lvs 调度器

  lvs的功能是把远程客户端发来的大量请求进行调度,而且调度性能极高,可以达到400万的调度
  集群就是把多个主机组合起来,形成一个单一的系统
  cluster集群,当我们的业务迅速的增长的时候,企业内部收到大量的并发请求,我们可以提升性能
  提升性能的方法有两种
  一种是向上扩展,就是增加配置
  一种是向外控制,就是增加设备
  vip:当远程的客户端的域名来到lvs进行域名解析,但是后端有多台服务器,不知道该解析的那个ip,我们可以在lvs上配置一个vip虚拟ip,让域名解析这个虚拟的ip,互联网用户只能访问这个虚拟ip
  rip:后端真正提供服务的服务器
  集群又可以根据它的特性又分成若干个分类
  LB :负载均衡集群
  负载均衡就是把用户的请求均匀的或者按照一定的比例分布在不同的主机上,第一个用户的请求调度到第一台服务器,第二个用户请求调度到第二个服务器上
  HA:高可用集群
  高可用集群就是为了实现高可用的功能,高可用的概念
  MTBF:平均无故障时间
  MTTR :平均恢复前时间
  他们之间有一个公式
  A=MTBF/(MTBF+MTTR) 他们的结果称为高可用集群的一个性能指标,我们认为指标越高,可用性就越高
  HPC:高性能集群
  高性能就是说我们拿多台服务器计算一个量特别大的内容,
  分布式系统:例如云盘
  负载均衡集群
  LVS
  nginx
  haproxy
  会话保持 负载均衡
  1.session sticky session绑定
  session 只要来自同一个ip请求,就固定的往一台服务器上调度
  cookie 用户发请求到后端服务器的时候,会生成一个cookie信息,然后把这个cookie信息发送给用户端,用户的硬盘就生成了一个cookie信息,下次在访问这个网站就会在请求报文带有这样cookie信息,这样的话调度器看到用户请求报文的cookie信息,就会调度到有cookie信息的后端服务器
  2.session replication
  3.session server 专有的session服务器
  搭建一个服务器用来存放session
  HK高可用集群的解决方案
  keepalived 高可用,避免调度器的单点失败
  LVS是一个负载均衡调度器,而且集成在内核
  lvs的工作原理
  lvs根据用户的请求报文根据某种算法,调度到后端的多个服务器上,每个服务器叫RS
  lvs 调度器
  RS 后端的服务器
  CIP 客户端的ip
  VIP 虚拟ip,发布到互联网的ip
  DIP 调度器连接内网的ip
  RIP 后端服务器的ip
  lvs调度器的工具
  ipvsadm,用户可以用ipvsadm工具定义lvs规则
  ipvs 在内核里面涉及到的一个执行lvs的框架,他也是一个钩子函数,工作在input钩子上
  lvs集群的类型
  lvs-nat 修改请求报文的目标ip,多目标ip的DNAT
  客户端的源地址 和目标地址vip到达lvs调度器
  lvs调度器改变目标地址的vip,将不变的源地址和改变的目标地址调度到后端的服务器,
  后端的服务器在变成源地址,客户端变成目标地址
  将源地址和目标地址发布到LVS调度器,调度器在将源地址替换成vip,
  在将改变的源ip和不变的目标ip发到互联网的客户端
  lvs-nat的特性
  RIP和DIP应该在同一网络,但不是必须,应该使用私有网址,RS的网关指向DIP
  请求报文和响应报文必须由Director转发,Director容易成为系统瓶颈
  支持端口映射,就是互联网访问的端口,和内部服务器提供服务的端口,可以不一样
  lvs调度器必须是linux,但是后端的服务器可以是容易OS系统
  lvs-nat 能支持后端服务器的数量是10 ~ 20
  lvs-dr 直接路由,lvs默认用这种模式
  请求报文
  1.互联网用户源ip,Mac地址和目标vip还有路由器mac地址到达路由器,
  路由器在转发到lvs调度器
  2.互联网用户源ip,Mac变成路由器的Mac地址,目标vip不变,mac地址变成lvs的mac地址,到达lvs调度器
  lvs根据调度算法,要调度到后端的一台服务器上,例如是RS1服务器
  3.互联网用户的源ip不变,Mac地址变成lvs的Mac地址,
  目标vip的地址不变,Mac地址变成RS的mac地址
  在RS上配置和lvs调度器一样的vip,不然RS服务器只能识别自己的mac地址,但是不识别vip
  注意:要保证RS服务器的vip和lvs调度器的vip地址不冲突
  地址冲突的原因是,当你采用这个ip的时候,网络服务一启动,它会向网络中发arp广播,向网络中问,我配置了一个ip在网络中有没有一样的,如果有人回应这个包,我就知道ip冲突了。
  要避免这种冲突
  方法 一
  1.配置完ip,不发广播
  2.别人发广播,我不回应
  我们要修改内核集的参数
  /proc/sys/net/ipv4/conf/all/arp_ignore 忽略广播
  /proc/sys/net/ipv4/conf/all/arp_announce 不发广播
  方法二
  我们在路由器绑定,只要是发往vip的,就绑定lvs的mac地址
  回应报文
  发往路由器
  4. 源vip 源RS的mac地址,目标用户ip,路由器的mac地址,我们通过广播得到路由器的mac地址,到达路由器,不用经过lvs调度器
  5.源vip不变,mac地址变成路由器的Mac地址,目标ip不变,mac地址变成了远程用户的mac地址
  lvs-dr的通信过程
  客户端先第一次握手,syn同步请求到达lvs调度器,调度器在将syn同步请求调度到后端服务器
  第二次握手,syn ack直接从RS服务器回到客户端
  第三次握手,ack请求报文到达lvs调度器,调度器在将lvs请求调度到后端服务器
  lvs-dr的特性
  1.director和RS都要配置VIP
  2.要确保vip请求报文发往lvs
  3.RS的rip可以是私网地址,也可以是公网地址,一般是私网地址
  4.RS和director要在同一物理网络
  5.请求报文要经过director,响应报文不经过director,有RS直接响应客户端
  6,不支持端口映射
  7,RS可以用大多数的OS系统
  lvs-dr的优点
  响应报文不用经过lvs调度器,所以性能提升了
  lvs-dr的缺点
  只能更改数据链路层,ip层和传输层不动,不动意味着端口改不了,客户端访问lvs的时候是80端口,那么后端的RS服务器也必须是80端口
  lvs-dr 能支持后端服务器的数量是100台左右
  下面两种了解即可
  lvs-tun
  lvs-fullnat
  ipvs 是内核级的功能
  ipvs 调度算法可以分为两类,这两类调度就是考虑不考虑后端RS服务器的压力
  静态调度算法,就是定义完成以后,按照固定的调度算法来调度,不管后端服务器的情况,负载情况,一直按照这种规则来调度
  静态有四种算法
  1.RR: 轮循,权重都一样
  2.WRR:加强轮循,要考虑后端服务器的性能,如果一台服务器性能好,一台性能不好,我们可以配置权重,如果性能好的服务器就多调度
  3.SH:源ip地址heah哈希,就是实现session sticky绑定,同一个ip来的请求报文,调度在同一个后端服务器上。对源地址进行哈希运算,得出一个值,只要是同一个源地址来的请求,哈希值都一样,就调度到同一个RS服务器上,从而实现会话绑定。
  4.DH:目标地址哈希,就是一个ip请求报文,到了后端的RS服务器,RS服务器做哈希运算,以后只要是同一个ip来的请求,都调度到一个后端服务器上,典型使用场景是正向代理缓存场景中负载均衡,如:宽带运营商
  LVS第一个视频的70分
  动态调度算法,考虑后端RS服务器的压力,如果压力大就少调度,如果压力小就多调度
  1.LC:最少连接,那台后端服务器的负载小,就优先往这台服务器调度
  有一个算法来决定那个服务器的调度少
  activeconns活动连接数*256+inactiveconns非活动连接数=值,这个值就是负载,得到的值越大我们认为调度的时候就不要往上调度,值越小就优先调度
  缺点:没有考虑到后端服务器的性能问题,
  2.WLC:解决方法是加权重,也是默认的调度算法
  (activeconns活动连接数*256+inactiveconns非活动连接数)/weight权重=值
  值越小就优先调度
  缺点:如果是第一次连接,谁是lvs加的第一个RS服务器就往谁调度,如果这个服务器正好是性能不好的,这样性能不好的RS服务器反而是优先连接
  3.SED:初始连接的时候优先让权重高的优先连接,初始的时候活动连接是0,0+1*256/weight
  (activeconns活动连接数+1)*256/weight权重=值
  缺点:如果权重设置的差异比较大,会造成大量的连接请求,连接到权重大的服务器,而其他权重小的服务器,没有连接请求到服务器。
  4.NQ:第一轮的连接请求,进行均匀的分配,后续使用SED
  下面的一般用于电信运营商
  5.LBLC:动态的DH算法,根据负载状态进行正向代理的调度,就是当我负载大的时候可以调度到其他缓存服务器
  6.LBLCR:带复制功能的LBLC,把一台缓存服务器的数据,复制到其他缓存服务器,这样的话,每个缓存服务器都有缓存了,这样就可以实现更均衡的负载
  LVS没有对后端服务器的健康性检查,当有后端的RS服务器down,可以用ldirectord技术,
  ldirectord 可以监控后端服务器的状态,当发现后端服务器down机,可以实现不访问,不调度,直接从ipvs的调度器列表中,把出故障的服务器记录删除,这样就不会往这台服务器调度
  LVS 调度器
  linux虚拟服务器
  VIP LVS服务器的虚拟ip,发布到互联网的ip,不提供服务
  RIP是真正提供服务的ip
  CIP 客户端的ip
  DIP 调度器连接内网的ip
  LVS 的安装包
  yum install ipvsadm -y
  ipvsadm -Ln 查看按数字显示
  ipvsadm -A 创建
  例 ipvsadm -A -t(是tcp的协议) 172.20.98.61:80(vip的地址,服务的端口) -s(指定算法,默认不指定是WLC)
  ipvsadm -a 添加 RS服务器
  ipvsadm -a -t(是tcp的协议) 172.20.98.61:80(vip的地址,服务的端口) -r(指定RS 服务器的地址) 192.168.63.22(RS服务器的地址) 指定模式 (-m是nat模式,-g是dr模式,-i是 tun模式)
  ipvsadm -d 删除单条规则
  ipvsadm -d -t(是tcp的协议) 172.20.98.61:80(vip的地址,服务的端口) -r(指定RS 服务器的地址) 192.168.63.22(RS服务器的地址)
  ipvsadm -C 是清除所有规则
  ipvsadm -E 修改群集规则
  ipvsadm -E -t 172.20.0.200:80 -s wrr 更改算法为wrr
  ipvsadm -e 修改单挑规则
  ipvsadm -e -t 172.20.98.61:80 -r 10.0.0.4 -m
  cluster 集群,为解决魔鬼特定的问题将多台主机,组合起来形成单个系统
  linux的cluster集群,又可以分为
  LB 负载均衡:按照一种比例负载均衡
  HA 高可用集群:高可用性
  HPC 高效能集群
  cluster 以工作协议为层次划分为,传输层和应用层
  传输层可以实现比较低的层次ip
  应用层,针对特定的协议 例如:http mysql 等
  keepalived:vrrp协议 解决lvs单点故障的方法
  ipvsadm 制定lvs规则的工具
  保存规则
  ipvsadm-save -n > /etc/sysconfig/ipvsadm
  然后设置为开机自启,重启会自动恢复
  systemctl enable ipvsadm
  恢复规则
  ipvsadm-restore < /etc/sysconfig/ipvsadm
  算法
  rr 是轮循,平均的轮换的执行
  ipvsadm -A -t 172.20.0.200:80 -s rr
  wrr 指定权重,哪个服务器性能好指定哪个服务器多执行
  ipvsadm -A -t 172.20.0.200:80 -s wrr
  ipvsadm -a -t 172.20.0.200:80 -r 10.0.0.2 -w 3 -m
  172.20.0.200:80 是对外的vip 10.0.0.2是RS服务器的ip
  -w是设置权重为3,就是每3下执行一次,默认是权重是1
  sh算法 是原地址哈希,如果是相同的客户端地址,永远访问的是相同的RS服务器
  ipvsadm -A -t 172.20.0.200:80 -s sh
  wlc算法是默认算法,有权重
  ipvsadm -A -t 172.20.0.200:80
  ipvsadm -a -t 172.20.0.200:80 -r 10.0.0.2 -w 3 -m
  不指定-w权重是默认权重为1
  lvs的集群
  lvs-nat :修改请求报文的目标ip
  lvs-dr:
  lvs-tun
  lvs-fullnat
  lvs类型:
  -g: gateway, dr类型,默认
  -i: ipip, tun类型
  -m: masquerade, nat类型
  -w weight:权重
  lvs-nat模型的特点:
  请求报文替换的是目标地址,从互联网发请求报文到LVS服务器,然后把目标地址替 换成其中一个RS服务器
  请求报文和回来的响应报文都要经过LVS服务器
  支持端口映射,LVS发布到互联网的服务用的端口号,和后端真正用的端口号可以不一样
  在NAT模型中有两个地址,一个是DIP ,一个是VIP 。DIP是连接内网的ip,VIP是连接公网的ip
  lvs-DR模式的特点:
  把数据报文中的源MAC,改为自己的Mac地址,把目标MAC地址改为其中一个RS的Mac地址,只是更改数据链路层的MAC地址,其他的端口号啊ip啊都不改
  因为是数据链路层所以LVS服务器和RS服务器之间不能跨网络,中间不能隔路由器,只能加交换机
  如何找到Mac地址,可以通过arp广播,LVS 事先已经配置了RS服务器的ip地址,知道往哪个主机上调度,但是还是不知道具体位置,我们可以通过ARP广播找到MAC地址,找到MAC以后修改数据报文中的目标Mac地址,把目标Mac地址填充为调度的RS 服务器的地址
  RS服务器上和LVS调度器上有同样的VIP对外的虚拟ip,由于RS服务器同样有VIP虚拟ip,所以回来的时候就不用经过LVS调度起来,直接返回给客户端
  缺点是:
  由于不能更改端口,所以到达LVS的端口是80,那么RS服务器上的端口也必须是80端口
  LVS 和RS有同样的VIP怎么办?
  由于我们的LVS调度器和RS服务器都有同样的VIP,为了避免ip冲突我们可以
  修改内核的参数,打开两个选项,一个不对外发布,一个不响应,这样就可以拥有这个地址,不会产生冲突的提示了
  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore lo网卡不往外发送地址
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore l所有lo网卡不往外发送地址
  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce lo网卡不接收网卡信息
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 所有lo网卡不接收网卡信息
  LVS 的默认调度算法是WLC
  LVS调度的时候是根据协议调度的 例如 TCP
  本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑
  出的RS的RIP和PORT实现转发
  (1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
  (2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  (3)支持端口映射,可修改请求报文的目标PORT
  (4)VS必须是Linux系统,RS可以是任意OS系统
  LVS-DR模式,直接路由,lvs的默认模式,应用广泛
  LVS调度器和服务器必须有一样的VIP虚拟ip
  请求报文必须经过LVS 调度器,响应报文不用经过LVS调度器
http://i2.运维网.com/images/blog/201808/14/2d750836c44c582b1f83a6e209485327.gif
  vip 是公网ip
  RIP 可以是私有ip,也可以是公有ip。一般是私有ip
  实现LVS-NAT 模型
http://i2.运维网.com/images/blog/201808/14/bd20d23d6c06a6585f97b77f80144d59.gif
  客户端 client 172.20.98.200
  lvs ens37 172.20.98.61
  lvs ens33 192.168.63.131
  RS1 192.168.63.134 PREFIX=24 GATEWAY=192.168.63.131
  RS2 192.168.30.135 PREFIX=24 GATEWAY=192.168.63.131
http://i2.运维网.com/images/blog/201808/14/a1ebfa7c1479a51ec92130d22f031816.gif
  在LVS启用路由功能,用来地址转换
  echo net.ipv4.ip_forward=1 > /etc/sysctl.conf
  启用
  sysctl -p
  查看是否成功启用
  sysctl -a |grep ip_f
  RS1
  yum install httpd -y
  echo RS1 > /var/www/html/index.html
  systemctl restart httpd
  RS2
  yum install httpd -y
  echo RS2 > /var/www/html/index.html
  systemctl restart httpd
  在lvs测试
  curl 192.168.63.134
  curl 192.168.63.135
  在lvs 调度器
  yum install ipvsadm -y
  2018/07/02 11:12
  定义集群服务
  ipvsadm -A -t 172.20.98.61:80 -s rr
http://i2.运维网.com/images/blog/201808/14/58b678f9cb77774b3673d036cfa3dc48.gif
  -A 创建
  -t 代表tcp
  172.20.98.61 是VIP 虚拟的ip
  80 http服务的端口
  rr 算法 默认不指定是wlc
  查看
http://i2.运维网.com/images/blog/201808/14/772358ae6de7a60294d9cdc462cbd923.gif
  加入RS
  ipvsadm -a -t 172.20.98.61:80 -r 192.168.63.134 -m
  ipvsadm -a -t 172.20.98.61:80 -r 192.168.63.135 -m
http://i2.运维网.com/images/blog/201808/14/6f2c86e6683146eac2c9a2d23357353c.gif
  -a 加入
  -t 代表tcp
  172.20.98.61 是VIP 虚拟的ip
  80 http服务的端口
  -r 指定RS
  192.168.63.135 RS服务器
  -m 代表nat模式
  查看
  ipvsadm -Ln
http://i2.运维网.com/images/blog/201808/14/af9d06e3bd6cc133711506c5fcb4bca2.gif
  在客户端测试
  curl 172.20.98.61
http://i2.运维网.com/images/blog/201808/14/688f5b5a73f5e88d80e72fc126637b73.gif
  在增加一个路由器
  客户端 client 172.20.98.200
  lvs ens37 172.20.98.61
  lvs ens33 192.168.63.131
  router ens33 172.168.63.136
  router ens37 10.0.0.2
  RS1 10.0.0.3 PREFIX=8 GATEWAY=10.0.0.2
  RS2 10.0.0.4 PREFIX=8 GATEWAY=10.0.0.2
  启用路由功能
  echo net.ipv4.ip_forward=1 > /etc/sysctl.conf
  执行
  sysctl -p
  在路由器添加一条道LVS服务器的路由
  route add default gw 192.168.63.131
http://i2.运维网.com/images/blog/201808/14/7506f8b17eccdbc25321b217b7640517.gif
  #######################################################################3
  实现一个网段的DR
  准备工作
  客户端
  vim /etc/sysconfig/network-scripts/ifcfg-ens37
  DEVICE=ens37
  IPADDR=172.20.98.106
  PREFIX=16
  GATEWAY=172.20.98.200
  路由器
  vim /etc/sysconfig/network-scripts/ifcfg-ens37
  DEVICE=ens37
  IPADDR=172.20.98.200
  PREFIX=16
  vim /etc/sysconfig/network-scripts/ifcfg-ens33
  DEVICE=ens33
  IPADDR=192.168.63.132
  PREFIX=24
  启用路由功能
  echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
  执行
  sysctl -p
  LVS
  DEVICE=ens33
  IPADDR=192.168.63.134
  PREFIX=24
  GATEWAY=192.168.63.132
  RS1
  DEVICE=ens33
  IPADDR=192.168.63.139
  PREFIX=24
  GATEWAY=192.168.63.132
  RS2
  DEVICE=ens33
  IPADDR=192.168.63.136
  PREFIX=24
  GATEWAY=192.168.63.132
  配置VIP
  在RS1和RS2服务器配置vip虚拟ip
  因为要配置多个相同的vip,所以为了避免冲突,我们要修改内核的配置
  echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore lo网卡不往外发送地址
  echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore l所有lo网卡不往外发送地址
  echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce lo网卡不接收网卡信息
  echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 所有lo网卡不接收网卡信息
  ip a a 192.168.63.134/32 dev lo 在回环网卡上配置虚拟ip
  在PS1和RS2服务器是安装http服务
  yum install httpd -y
  echo RS1 > /var/www/html/index.php
  echo RS2 > /var/www/html/index.php
  启动服务
  systemctl restart httpd
  #########################################################################33
  实用
  实现跨网络的DR的LVS
http://i2.运维网.com/images/blog/201808/14/64882af62035bdcda02490c3f6c7fbf8.gif
  客户端
  vim /etc/sysconfig/network-scripts/ifcfg-ens37
  DEVICE=ens37
  IPADDR=172.20.98.106
  PREFIX=16
  GATEWAY=172.20.98.200
  路由器
  vim /etc/sysconfig/network-scripts/ifcfg-ens37
  DEVICE=ens37
  IPADDR=172.20.98.200
  PREFIX=16
  vim /etc/sysconfig/network-scripts/ifcfg-ens33
  DEVICE=ens33
  IPADDR=192.168.63.132
  PREFIX=24
  ip a a 10.0.0.200/8 dev ens33
  启用路由功能
  echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
  执行
  sysctl -p
  LVS
  DEVICE=ens33
  IPADDR=192.168.63.134
  PREFIX=24
  GATEWAY=192.168.63.132
  RS1
  DEVICE=ens33
  IPADDR=192.168.63.139
  PREFIX=24
  GATEWAY=192.168.63.132
  RS2
  DEVICE=ens33
  IPADDR=192.168.63.136
  PREFIX=24
  GATEWAY=192.168.63.132
  mysql
  DEVICE=ens33
  IPADDR=192.168.63.135
  PREFIX=24
  GATEWAY=192.168.63.132
  NFS服务器
  DEVICE=ens33
  IPADDR=192.168.63.138
  PREFIX=24
  GATEWAY=192.168.63.132
  DNS服务器
  DEVICE=ens37
  IPADDR=172.20.102.108
  PREFIX=16
  GATEWAY=172.20.102.200
  路由器配置
  启用路由功能
  echo net.ipv4.ip_forward=1 > /etc/sysctl.conf
  执行
  sysctl -p
  LVS服务器配置
  执行脚本
  bash lvs_dr_vs.sh start
  vim lvs_dr_vs.sh
  #!/bin/bash
  #Author:wangxiaochun
  #Date:2017-08-13
  vip='10.0.0.100'
  iface='ens33:1'
  mask='255.255.255.255'
  port='80'
  rs1='192.168.63.134'
  rs2='192.168.63.135'
  scheduler='wrr'
  type='-g'
  rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null
  case $1 in
  start)
  ifconfig $iface $vip netmask $mask #broadcast $vip up
  iptables -F
  ipvsadm -A -t ${vip}:${port} -s $scheduler
  ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
  ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
  echo "The VS Server is Ready!"
  ;;
  stop)
  ipvsadm -C
  ifconfig $iface down
  echo "The VS Server is Canceled!"
  ;;
  *)
  echo "Usage: $(basename $0) start|stop"
  exit 1
  ;;
  esac
  在RS1和RS2执行脚本
  bash lvs_dr_rs.sh start
  vim lvs_dr_rs.sh
  vip=10.0.0.100
  mask='255.255.255.255'
  dev=lo:1
  rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null
  service httpd start &> /dev/null && echo "The httpd Server is Ready!"
  echo "`hostname`" > /var/www/html/index.html
  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 $dev $vip netmask $mask #broadcast $vip up
  #route add -host $vip dev $dev
  echo "The RS Server is Ready!"
  ;;
  stop)
  ifconfig $dev 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 "The RS Server is Canceled!"
  ;;
  *)
  echo "Usage: $(basename $0) start|stop"
  exit 1
  ;;
  esac
  mysql服务器配置
  安装mysql数据库
  yum install mariadb-server -y
  启动服务
  systemctl start mariadb
  进入数据库
  mysql
  创建wpdb数据库
  create database wpdb;
  创建wpuser用户,密码是centos
  grant all on wpdb.* to wpuser@'192.168.63.%' identified by 'centos';
  刷新权限
  flush privileges;
  查看用户
  select hosr,user,password from mysql.user;
  配置NFS共享服务器,并安装WordPress服务。并共享服务
  tar xf wordpress-4.9.4-zh_CN.tar.gz -C /data/ 解压到data目录下
  vim /etc/exports 配置共享目录
  /data/wordpress 192.168.63.0/24(rw) 共享的目录是/data/wordpress,共享的ip范围是192.168.63.0/24 权限是rw
  exportfs -r 重读配置文件
  exportfs -v 查看共享文件
  yum install exportfs -y
  在RS1和RS2安装http服务
  yum install httpd php-fpm php-mysql -y
  挂载NFS服务器的共享目录
  vim /etc/fstab
  192.168.63.139:/data/wordpress /var/www/html/ nfs defaults 0 0
  mount -a 执行挂载
  vim /etc/httpd/conf.d/fcgi.conf 创建fcgi.conf文件,用来连接PHP
  DirectoryIndex index.php
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
  在httpd配置文件下添加index.php
  vim /etc/httpd/conf/httpd.conf
  
  DirectoryIndex index.php index.html
  
  启动httpd服务和php-fpm服务
  systemctl start httpd php-fpm
  更改共享目录里面的WordPress的配置文件
  cd /var/www/html/
  cp wp-config-sample.php wp-config.php
  如果拷贝不了,更改服务器端的/data/wordpress的权限为777
  vim wp-config.php
  define('DB_NAME', 'wpdb');
  /** MySQL数据库用户名 */
  define('DB_USER', 'wpuser');
  /** MySQL数据库密码 */
  define('DB_PASSWORD', 'centos');
  /** MySQL主机 */
  define('DB_HOST', '192.168.63.138');
  DNS服务器配置
  安装包
  yum install bind bind-utils -y
  修改配置文件
  vim /etc/named.conf
  options {
  listen-on port 53 { localhost; };
  listen-on-v6 port 53 { ::1; };
  directory "/var/named";
  dump-file "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  memstatistics-file "/var/named/data/named_mem_stats.txt";
  allow-query { localhost;any; };
http://i2.运维网.com/images/blog/201808/14/40914d1f4042ce6a53267f37fe150e29.gif
  vim /etc/named.rfc1912.zones
  zone "lvs.com" IN {
  type master;
  file "lvs.com.zone";
  };
http://i2.运维网.com/images/blog/201808/14/879379da3baa601e567c1a13a1313ea2.gif
  配置域库
  vim lvs.com.zone
  $TTL 1D
  @ IN SOA master.lvs.com. admin.lvs.com. (
  0 ; serial
  1D ; refresh
  1H ; retry
  1W ; expire
  3H ) ; minimum
  NS master
  master A 172.20.98.108
  www A 10.0.0.100
http://i2.运维网.com/images/blog/201808/14/0e7169c0840527d166a962282193504e.gif
  更改域库的属组
  chgrp named /var//named/lvs.com.zone
  检查主配置文件有没有错误
  systemctl reload named
  检查域库的格式
  named-checkzone "lvs.com" /var/named/lvs.com.zone
  在客户端
  指定DNS1为DNS服务器的ip
  测试
  curl www.lvs.com



页: [1]
查看完整版本: lvs 调度器