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

lvs+keepalived群集

一、top图:dir1:192.168.146.31dir2:192.168.146.32rs1:192.168.146.33rs2:192.168.146.34二、安装ipvsa

技术分享图片
一、top图:
dir1:192.168.146.31
dir2:192.168.146.32
rs1:192.168.146.33
rs2:192.168.146.34
二、安装ipvsadm和keepalived :
dir1:
#yum install gcc gcc-c++ -y
#yum install kernel-devel -y
#yum
-y install keepalived ipvsadm

#modprobe ip_vs
#yum install libnl -y
dir2:
#yum install gcc gcc-c++ -y
#yum install kernel-devel -y
#yum
-y install keepalived ipvsadm

#modprobe ip_vs
#yum install libnl -y
三、修改配置文件:

cd /etc/keepalived/
vim keepalived.conf

global_defs {

notification_email {

root@localhost #默认三个地址,修改可用地址

}

notification_email_from root@localhost

smtp_server localhost

smtp_connect_timeout 30

router_id xuegod63 #标识当前节点名字,两个节点的此项需要不相同。

}

#默认的配置文件中,使用第三方 smtp 服务器,但这在现实中几乎没有意义,发不出邮件,我们将其挃定为 localhost, 我们也可以将通知信息的发送交给本地 sendmail 服务处理。

vrrp_instance apache { #定义一个实例,一个集群就是一个实例。 默认VI_1 可以随意改,双击可以定义2个实例。

state MASTER #指定 A 节点为主节点 备用节点上设置为 BACKUP 即可
interface eth0 #绑定虚拟 IP 的网络接口
virtual_router_id 51 #VRRP 组名,两个节点的设置必须一样,以指明各个节点属于同一 VRRP 组
priority 100 #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.146.30 #指定虚拟 IP, 两个节点设置必须一样
}

}

#类似添加虚拟一个服务 ipvsadm -A -t 192.168.1.70:80 -s rr

virtual_server 192.168.146.30 80 { #对虚拟IP63添加LVS相关内容

delay_loop 6 #Keepalived 多长时间监测一次 RS
lb_algo rr #分发算法
lb_kind DR #DR 模式
nat_mask 255.255.255.0
persistence_timeout 50 #同一IP 50秒内的请求都发到同个real server ,这个会影响LVS的 rr 调度算法, 同一 IP 超过 50 秒后,再次访问,才会被转发到另一台 real server 上。 persistence 持久性的意思,#如果要测试是否轮询就要删除这行代码
protocol TCP
real_server 192.168.146.33 80 { #配置服务节点 1,需要指定 realserver 的真实 IP 地址和端口,IP 不端口之间用空格隔开
weight 1 #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器
TCP_CHECK { #这段内容手动添加,爸以前的内容删除
connect_timeout 3 #表示 3 秒无响应超时
nb_get_retry 3 #表示重试次数
delay_before_retry 3 #表示重试间隔
connect_port 80 #检测端口
}
}
real_server 192.168.146.34 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}

}

vrrp_instance nginx {

state BACKUP
interface eth0
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 11112
}
virtual_ipaddress {
192.168.146.29
}

}

virtual_server 192.168.146.29 80 {

delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50 #如果要测试是否轮询就要删除这行代码
protocol TCP

real_server 192.168.146.33 80 {

weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3

connect_port 80

}

}

real_server 192.168.146.34 80 {

weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3

connect_port 80

}
}

}
四、2个rs服务器上建立测试网页文件

yum install -y httpd php -y
service httpd restart
echo rs1 > /var/www/html/index.html

#echo rs2 > /var/www/html/index.html #第2台机器
五、rs1和rs2配置vip:

vim /etc/init.d/lvsrsdr

#!/bin/bash

#chkconfig:2345 80 90

#description:start relserver

VIP=192.168.146.30

source /etc/init.d/functions #加载环境变量(可以加载所有的环境变量)

case $1 in

start)

echo ‘start LVS of Realserver DR‘
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
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:1 down
echo ‘Close LVS of Realserver DR‘
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

chmod +x /etc/init.d/lvsrsdr

#/etc/init.d/lvsrsdr start

#chkconfig --add lvrsdr

#chkconfig lvsrsdr on

vim /etc/init.d/lvsrsdr2

#!/bin/bash

#chkconfig:2345 80 90

#description:start relserver

VIP=192.168.146.29

source /etc/init.d/functions #加载环境变量(可以加载所有的环境变量)

case $1 in

start)

echo ‘start LVS of Realserver DR‘
/sbin/ifconfig lo:2 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:2
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:2 down
echo ‘Close LVS of Realserver DR‘
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

chmod +x /etc/init.d/lvsrsdr2

#/etc/init.d/lvsrsdr start

#chkconfig --add lvrsdr2

#chkconfig lvsrsdr2 on

打开一个测试机器 :

curl http://192.168.146.29

或者:

elinks http://192.168.146.30 -dump


推荐阅读
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
author-avatar
记录生活传奇_909_874
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有