热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

centos7.2搭建keepalived+lvs

7系统下
centos7 系统安装出来默认的网卡设备名变成了eno....看着不舒服,先来修改下网卡设备名
添加虚拟网卡后不要使用ifconfig查看,要使用ip addr来看虚拟网卡设备名一般为ens37...


安装系统前光标放在"install centos 7"使用tap建,在kernel最后面添加net.ifnames=0 biosdevname=0


已安装好的系统

vim /etc/sysconfig/grub 
GRUB_CMDLINE_LINUX在其后面添加net.ifnames=0 biosdevname=0

grub2-mkconfig -o /boot/grub2/grub.cfg 

vim /etc/udev/rules.d/90-eno-fix.rules
将eno...改成eth0

网卡文件名和设备名全部改成eth开头即可。
[root@node01 network-scripts]# ls
ifcfg-eth0   ifdown-eth   ifdown-post    ifdown-TeamPort  ifcfg-eth1
[root@node01 network-scripts]# cat ifcfg-eth0(这里)
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0(这里)
DEVICE=eth0(这里)

reboot即可

修改网卡原文链接

这里顺带提一下修改MAC电脑的密码,开机按command+r进入重装系统界面,调出命令行,输入resetpassword回车,选择用户,根据提示来即可。


进入正题

selinux和firewalld关闭
1.wget http://www.keepalived.org/software/keepalived-1.2.22.tar.gz

2.wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26-1.src.rpm
rpm -ivh  ipvsadm-1.26-1.src.rpm
yum install -y ipvsadm

3.yum install -y gcc gcc+ openssl openssl-devel keepalived

4.tar -xf keepalived-1.2.22.tar.gz

5.cd keepalived-1.2.22/ && ./configure --prefix=/usr/local/ && make && make install

6.mkdir /etc/keepalived

7.cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

8.cd /etc/keepalived/ && vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost(不使用sendmail,修改为本地)
   }
   notification_email_from root@localhost(这里也是)
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS1 (这里先修改为LVS1)
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER(主)
    interface eth0  (绑定的网卡与你的网卡设备名一致)
    virtual_router_id 51(VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组)
    priority 100(主节点的优先级(1-254之间),备用节点必须比主节点优先级低)
    advert_int 1(组播信息发送间隔,两个节点设置必须一样  )
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200 (VIP)
    }
}

virtual_server 192.168.10.200 8080 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
 persistence_timeout 0
    protocol TCP
    nat_mask 255.255.255.0

    real_server 192.168.10.20 8080 {
        weight 1
        SSL_GET {
            url {
              path /index.jsp
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}       

9.按同样的方法配置另一节点并修改配置文件,可将次节点的配置文件复制到另一节点,并修改以下几项: 
router_id  LVS2
state   BACKUP
priority   99
其它项不必修改。

10.两边都配置完成后先启动主节点
systecmctl start keepalived

11.HTTP_GET:配置健康检查

url { 
        path /index.jsp  健康检查的页面
        digest 625eddd79c61cf84c71c0c17448f8093  根据页面计算出的MD5的值,这个值一定不能随便写,不然keepliv
}

下面说一下如何计算digest 

进入到/usr/local/keepalive/bin

./genhash -s 192.168.1.107 -p 8080 -u /index.jsp  
通过上诉命令计算digest  然后写到配置文件上就可以了。

12.配置真实服务器

说明:一般真实互联网应用都配置为lb_kind = dr 模式,因为这种模式效率是最高的,缺点就是配置稍微复杂一点,需要配置客户端。

DR模式原理请参考:http://atong.blog.51cto.com/2393905/1348602

简单说一下:  假设A为前端负载均衡服务器, B,C为后端真实服务器。 A接收到数据包以后,会把数据包的MAC地址改成B的(根据调度算法,假设发给B服务器),然后把数据包重新发出去,交换机收到数据包根据MAC地址找到B,把数据包交给B。 这时B会收到数据包,同时验证请求IP地址,由于数据包里的IP地址是给A的,所以正常情况下B会丢弃数据包,为了防止这种情况,需要在B机器的回环网卡上配置A的IP地址。并设置ARP压制。

1:在真实服务器上运行脚本文件

#!/bin/bash    
#description : start realserver  
VIP=192.168.10.200 
/etc/rc.d/init.d/functions  
case "$1" in  
start)  
echo " start LVS of REALServer"  
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
;;  
stop)  
/sbin/ifconfig lo:0 down  
echo "close LVS Directorserver"  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
;;  
*)  
echo "Usage: $0 {start|stop}"  
exit 1  
esac   

VIP=192.168.10.200   大家只要修改这个地方为虚拟IP即可,别的地方都不需要改。

2:需要对脚本授权 

chmod +x lvs_real.sh

3:如果脚本是在windows编辑在拷贝过去的会有问题,好像是回车换行符不同导致的。

sed -i ‘s/\r$//‘ lvs_real.sh

4:运行脚本

./lvs_real.sh

13.健康检查方式
virtual_server 192.168.10.200 8080 {
   delay_loop 6
   lb_algo rr
   lb_kind DR
   nat_mask 255.255.255.0
   persistence_timeout 0
   protocol TCP
   real_server 192.168.10.129 8080 {
       weight 1
      TCP_CHECK {
        connect_port    8080
        connect_timeout 5
      }
   }
   real_server 192.168.10.130 8080 {
       weight 1
      TCP_CHECK {
        connect_port    8080
        connect_timeout 5
      }
   }
}

connect_timeout 5   :连接超时时间
nb_get_retry 3        :重连次数
delay_before_retry 3  :重连间隔时间
connect_port 8080        :检测端口

原文1
原文2

下次想分享下6系统基于图形化的lvs+keepalived

centos7.2 搭建keepalived+lvs


推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
shadow
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有