lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

时间:2022-12-03 03:19:58

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡


 

实验要求

1、  lvs+ ldirectord负载均衡

2、  corosync+pacemaker高可用lvs

 

实验环境:

实验拓扑:

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

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包所有已上传至51cto资料链接地址如下:

         http://down.51cto.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 �Cy
[root@node1~]#yum install corosync pacemaker  httpd  �Cy
[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 
<h1>web.server:Test</h1>
[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 �Cy[root@node2~]#yum install corosync pacemaker  httpd  �Cy[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 <h1>web.server:Test</h1>[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 <h1>web.server:172.16.76.30:Test</h1>[root@node3html]# systemctl  restart httpd.service

      

         node4        

[root@node4~]#yum install httpd  �Cy[root@node4~]# cd /var/www/html/[root@node4 html]# vim index.html <h1>web.server:172.16.76.30:Test</h1>[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.cfchecktimeout=3 #检测超时checkinterval=1 #检测间隔#fallback=127.0.0.1:80  #fallback6=[::1]:80autoreload=yes   自动载入logfile="/var/log/ldirectord.log"  日志输出#logfile="local0" #emailalert="admin@x.y.z"#emailalertfreq=3600 #emailalertstatus=allquiescent=no # Sample for an http virtual servicevirtual=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

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡


         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

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

 

 

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.conftotem {         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 ~]# crmcrm(live)# configurecrm(live)configure# primitive vipocf:heartbeat:IPaddr params ip="172.16.76.100" #资源vipcrm(live)configure# primitive  lvs_direcror systemd:ldirectord  #添加资源ldirectord crm(live)configure# primitive sorry_httpd systemd:httpd #添加资源httpdcrm(live)configure# group lvs_dir viplvs_direcror sorry_httpd #组约束crm(live)configure# show  查看配置node 1: node1 \     attributes standby=onnode 2: node2 \     attributes standby=offprimitive lvs_direcror systemd:ldirectordprimitive sorry_httpd systemd:httpdprimitive vip IPaddr \     params ip=172.16.76.100group lvs_dir vip lvs_direcror sorry_httpdproperty cib-bootstrap-options: \     have-watchdog=false \     dc-version=1.1.13-10.el7-44eb2dd\     cluster-infrastructure=corosync\     stonith-enabled=false

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

    crm(live)configure# verify   #语法检查

    crm(live)configure#commit    #提交保存

    crm(live)configure#cd

    crm(live)# status   #状态查看

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡


 

node2:

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

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡


  

 测试:


lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡

lvs+ldirectord+corosync+pacemaker+httpd实现高可用负载均衡


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

若实验中真有问题欢迎指正;





本文出自 “秋季” 博客,请务必保留此出处http://lxlxlx.blog.51cto.com/3363989/1898249