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

[经验分享] lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

[复制链接]

尚未签到

发表于 2019-1-5 11:30:35 | 显示全部楼层 |阅读模式
  lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡
  

  实验要求
  1、  lvs+ ldirectord负载均衡
  2、  corosync+pacemaker高可用lvs
  
  实验环境:
  实验拓扑:

  ip网络地址规划
  1、  node1:lvs :172.16.76.10  (corosync+pacmaker)
  2、  node2:lvs :172.16.76.20  (corosync+pacmaker)
  3、  node3:172.16.76.30  Httpd
  4、  node4:172.16.76.40  Httpd
  
  实验前提:
  1、  关闭iptables及selinux
  2、  服务器时间同步ntpdate
  3、  基于主机名互相通信、ssh的互信通信(可选)
  
  注释:实验所有rpm包所有已上传至运维网资料链接地址如下:
           http://down.运维网.com/data/2287593
  
  
  
  基础配置
           node1:        
[root@node1 ~]#grep-i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64 #查看是否加载ipvs
[root@node1 ~]#yuminstall ipvsadm  ldirectord –y
[root@node1~]#yum install corosync pacemaker  httpd  –y
[root@node1 ~]#yum install./pssh-2.3.1-4.2.x86_64.rpm crmsh-2.1.4-1.1.x86_64.rpm \ python-pssh-2.3.1-4.2.x86_64.rpm
root@node1~]# cd /var/www/html/
[root@node1 html]# vim index.html
web.server:Test
[root@node1html]# systemctl  restart httpd.service  

            node2:
[root@node2 ~]#grep-i -C 10 "ipvs" /boot/config-3.10.0-327.el7.x86_64 #查看是否加载ipvs
[root@node2 ~]#yuminstall ipvsadm  ldirectord –y
[root@node2~]#yum install corosync pacemaker  httpd  –y
[root@node2 ~]#yum install./pssh-2.3.1-4.2.x86_64.rpm crmsh-2.1.4-1.1.x86_64.rpm \ python-pssh-2.3.1-4.2.x86_64.rpm
[root@node2~]# cd /var/www/html/
[root@node2 html]# vim index.html
web.server:Test
[root@node2html]# systemctl  restart httpd.service  

            node3        
[root@node3~]#yum install httpd -y
[root@node3~]# cd /var/www/html/
[root@node3 html]# vim index.html
web.server:172.16.76.30:Test
[root@node3html]# systemctl  restart httpd.service        

           node4        
[root@node4~]#yum install httpd  –y
[root@node4~]# cd /var/www/html/
[root@node4 html]# vim index.html
web.server:172.16.76.30:Test
[root@node4 html]# systemctl restart httpd.service  

    
  ldirectord配置        
           node1
[root@node1 ~]#ssh-keygen-t rsa
[root@node1 ~]#ssh-copy-id -i.ssh/id_rsa.pub  172.16.76.20
[root@node1~]# cd /etc/ha.d/
[root@node1ha.d]# cat ldirectord.cf
checktimeout=3 #检测超时
checkinterval=1 #检测间隔
#fallback=127.0.0.1:80  
#fallback6=[::1]:80
autoreload=yes   自动载入
logfile="/var/log/ldirectord.log"  日志输出
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
# Sample for an http virtual service
virtual=172.16.76.100:80   #虚拟ip
    real=172.16.76.30:80 gate  #DR模式 realserver
    real=172.16.76.40:80 gate
    fallback=127.0.0.1:80 gate   #备份server (sorroy server)
    service=http #协议
    scheduler=rr #轮询
    #persistent=600
    #netmask=255.255.255.255
    protocol=tcp
    checktype=negotiate  协商
    checkport=80 检测端口
   request="index.html"  检测请求url
    receive="Test"   请求页面包含信息
[root@node1~]# systemctl restart ldirectord.service  

  

           node2:
[root@node2 ~]#ssh-keygen-t rsa  #密钥
[root@node2 ~]#ssh-copy-id -i.ssh/id_rsa.pub  172.16.76.10
[root@node2~]#scp 172.16.76.10/etc/ha.d/ldirectord.cf /etc/ha.d/
[root@node2~]# systemctl restart ldirectord.service

  
  
  Corosync配置
           node1
          
[root@node1~]# systemctl stop ldirectord.service
[root@node1 ~]# systemctl enable directord.service
[root@node1 ~]# systemctl enable httpd.service
[root@node1 ~]# cd /etc/corosync/
[root@node1 ~]# vim corosync.conf
totem {
         version: 2  #版本
         crypto_cipher: aes128  #加密
         crypto_hash: md5  
         interface {
                   ringnumber:0  环0
                   bindnetaddr:172.16.0.0   绑定网络
                   mcastaddr:239.255.101.11  #组播传递ip
                   mcastport:5405  #组播传递端口
                   ttl: 1
}
}
logging {
         fileline: off
         to_stderr: no
         to_logfile: yes
         logfile:/var/log/cluster/corosync.log
         to_syslog: no
         debug: off
         timestamp: on
         logger_subsys {
         subsys: QUORUM
         debug: off
}
}
quorum {
         provider:corosync_votequorum
         two_nodes: on
}
         nodelist {     节点列表
                   node {
                            ring0_addr:172.16.76.10
                            nodeid:1
}
                   node {
                            ring0_addr:172.16.76.20
                            nodeid:2
}
}
[root@node1corosync]# corosync-keygen #生成多播信息密码
[root@node1corosync]#scp authkey corosync.conf 172.16.76.20:/etc/corocync/
[root@node1 ~]#systemctl restart corosync.service
[root@node1 ~]#systemctl restart pacemaker.service  

   #注生成密钥时需要用到 /dev/random  一共需要1024位的长度
       # 生成后的密钥文件会在配置文件目录下自行生成一个authkey文件;
           #/dev/random是 Linux系统下的随机数生成器,它会从当前系统的内存中一个叫熵池的地址空间中根据系统中断来生成随机数,加密程序或密钥生成程序会用到大量的随机数,就会出现随机数不够用的情况,random 的特性就是一旦熵池中的随机数被取空,会阻塞当前系统进程等待产生中断会继续生成随机数;
      #由于此处会用到1024位长度的密钥,可能会存在熵池中的随机数不够用的情况,就会一直阻塞在生成密钥的阶段,两种解决办法:
        1、手动在键盘上输入大量字符,产生系统中断(产生中断较慢,不建议使用)        
        2、通过互联网或FTP服务器下载较大的文件(产生中断较快,建议使用)
          
  node2
[root@node2 ~]#systemctl stop ldirectord.service
[root@node2 ~]# systemctl enable directord.service
[root@node2 ~]# systemctl enable httpd.service
[root@node2 ~]#systemctl restart corosync.service
[root@node2~]# systemctl restart pacemaker.service  

    
  Crm
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# primitive vipocf:heartbeat:IPaddr params ip="172.16.76.100" #资源vip
crm(live)configure# primitive  lvs_direcror systemd:ldirectord  #添加资源ldirectord
crm(live)configure# primitive sorry_httpd systemd:httpd #添加资源httpd
crm(live)configure# group lvs_dir viplvs_direcror sorry_httpd #组约束
crm(live)configure# show  查看配置
node 1: node1 \
     attributes standby=on
node 2: node2 \
     attributes standby=off
primitive lvs_direcror systemd:ldirectord
primitive sorry_httpd systemd:httpd
primitive vip IPaddr \
     params ip=172.16.76.100
group lvs_dir vip lvs_direcror sorry_httpd
property cib-bootstrap-options: \
     have-watchdog=false \
     dc-version=1.1.13-10.el7-44eb2dd\
     cluster-infrastructure=corosync\
     stonith-enabled=false


      crm(live)configure# verify   #语法检查
      crm(live)configure#commit    #提交保存
      crm(live)configure#cd
      crm(live)# status   #状态查看

  

  
  node2:
  [root@node2 ~]# crm node standby (手动离线节点2) #online (上线) #即手动离线node2后服务自动漂移至node1节点之上;

  

    
   测试:
  



  

  至此实验完成。本实验只为简单介绍其配置方式,文中指令诸多解释将在随后博客之中发布;
  若实验中真有问题欢迎指正;
  

  

  

  





运维网声明 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-659616-1-1.html 上篇帖子: 跨机房lvs+haproxy防CC*** 下篇帖子: Linux下群集服务之LB集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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