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

学习笔记(2)——实验室集群LVS配置

查看管理结点mgt的网卡信息,为mgt设置VIP[root@mgt~]#ifconfigeth0Linkencap:EthernetHWaddr5C:F3:FC:E

查看管理结点mgt的网卡信息,为mgt设置VIP

[root@mgt ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 5C:F3:FC:E9:61:78
          inet addr:192.168.253.100  Bcast:192.168.253.255  Mask:255.255.255.0
          inet6 addr: 2001:cc0:2034:253:5ef3:fcff:fee9:6178/64 Scope:Global
          inet6 addr: fe80::5ef3:fcff:fee9:6178/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19849 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8129 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2010431 (1.9 MiB)  TX bytes:4288209 (4.0 MiB)
          Interrupt:28 Memory:92000000-92012800

eth1      Link encap:Ethernet  HWaddr 5C:F3:FC:E9:61:7A
          inet addr:172.20.0.1  Bcast:172.20.0.255  Mask:255.255.255.0
          inet6 addr: 2001:cc0:2034:253:5ef3:fcff:fee9:617a/64 Scope:Global
          inet6 addr: fe80::5ef3:fcff:fee9:617a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17998 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21715 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1596283 (1.5 MiB)  TX bytes:12926260 (12.3 MiB)
          Interrupt:40 Memory:94000000-94012800

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:5798104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5798104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:803149634 (765.9 MiB)  TX bytes:803149634 (765.9 MiB)

发现mgt结点有2块网卡,eth0配置了外部IP,供其与局域网内部其他机器访问通信,eth01配置了内部IP,供其与各个计算节点之间访问通信。现在需要把mgt结点作为LVS的DirectorServer,需要在其上设置虚拟IP(VIP)。备注:若需要修改eth0的IP地址,可执行下面的命令(其他网卡参数修改类似):

[root@mgt ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

(1)新建directorserver.sh脚本,代码如下:

#!/bin/bash
setenforce 0
VIP=192.168.253.110
/sbin/ifconfig eth0:0 192.168.253.110 broadcast 192.168.253.110 netmask 255.255.255.255 up
/sbin/route add -host 192.168.253.110 dev eth0:0
sysctl -p

此时再次查看网卡信息,除了已有的eth0、eth1和lo之外,新增了eth0:0,即为虚拟IP地址:

[root@mgt zmq]# ifconfig
eth0:0    Link encap:Ethernet  HWaddr 5C:F3:FC:E9:61:78
          inet addr:192.168.253.110  Bcast:192.168.253.110  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:28 Memory:92000000-92012800

查看其路由表,发现新增了一条192.168.253.110在eth0设备上的理由转发规则:

[root@mgt zmq]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.253.110 *               255.255.255.255 UH    0      0        0 eth0      //新增
172.20.0.0      *               255.255.255.0   U     0      0        0 eth1
192.168.253.0   *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth0
link-local      *               255.255.0.0     U     1004   0        0 eth1
default         192.168.253.254 0.0.0.0         UG    0      0        0 eth0

在director server结点上开启包转发功能:

[root@mgt zmq]# echo "1" >/proc/sys/net/ipv4/ip_forward

 

(2)在计算节点上设置VIP,计算节点为集群的realserver,绑定在每个节点的回环地址上。以node01为例:

[root@node01 ~]# ifconfig
//设备eth0绑定了外部IP
eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E9:
64:78 inet addr:192.168.253.101 Bcast:192.168.253.255 Mask:255.255.255.0 inet6 addr: 2001:cc0:2034:253:5ef3:fcff:fee9:6478/64 Scope:Global inet6 addr: fe80::5ef3:fcff:fee9:6478/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:102834 errors:0 dropped:0 overruns:0 frame:0 TX packets:111724 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44921980 (42.8 MiB) TX bytes:10122764 (9.6 MiB) Interrupt:28 Memory:92000000-92012800 //虚拟网卡eth0:0绑定了内部IP eth0:0 Link encap:Ethernet HWaddr 5C:F3:FC:E9:64:78 inet addr:172.20.0.11 Bcast:172.20.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:28 Memory:92000000-92012800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5359 errors:0 dropped:0 overruns:0 frame:0 TX packets:5359 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:348956 (340.7 KiB) TX bytes:348956 (340.7 KiB)

执行脚本realserver.sh,脚本内容如下:

#!/bin/bash
setenforce 0
VIP=192.168.253.110
/sbin/ifconfig lo:0 192.168.253.110 broadcast 192.168.253.110 netmask 255.255.255.255 up
/sbin/route add -host 192.168.253.110 dev lo:0
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
sysctl -p
[root@node01 zmq]# ./realserver.sh
setenforce: SELinux is disabled
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_synCOOKIEs = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

再次查看网卡信息:

[root@node01 zmq]# ifconfig
//新增了一条记录
lo:0      Link encap:Local Loopback
          inet addr:192.168.253.110  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

在每个计算节点上执行上述过程。注意:上述配置在每次重启network服务(命令:service network restart)后会失效。

(3)配置director server,执行脚本ipvsadm.sh,其内容为:

#/bin/hash
op=$1
MAP_PORT=9527
WEB_PORT=8080
AL_PORT=35569
TEST_PORT=80
LVS_SERVER_VIP=192.168.253.110
MODE=wrr

hosts=(192.168.253.101 192.168.253.102 192.168.253.103 192.168.253.104 192.168.253.105)
WMap=(100 100 100 80 80)
WWeb=(100 100 100 80 80)
WAl=(100 100 100 80 80)
WTest=(1 1 1 1 1)

ipvsadm -C
ipvsadm -A -t ${LVS_SERVER_VIP}:${MAP_PORT} -s ${MODE}
ipvsadm -A -t ${LVS_SERVER_VIP}:${WEB_PORT} -s ${MODE}
ipvsadm -A -t ${LVS_SERVER_VIP}:${AL_PORT} -s ${MODE}
if [ "$op" == test ]; then
        ipvsadm -A -t ${LVS_SERVER_VIP}:${TEST_PORT} -s ${MODE}
fi
i=0
while [ $i -lt ${#hosts[@]} ];
do
        ipvsadm -a -t ${LVS_SERVER_VIP}:${MAP_PORT} -r ${hosts[$i]}:${MAP_PORT} -w ${WMap[$i]} -g
        ipvsadm -a -t ${LVS_SERVER_VIP}:${WEB_PORT} -r ${hosts[$i]}:${WEB_PORT} -w ${WWeb[$i]} -g
        ipvsadm -a -t ${LVS_SERVER_VIP}:${AL_PORT} -r ${hosts[$i]}:${AL_PORT} -w ${WAl[$i]} -g
if [ "$op" == test ]; then
        ipvsadm -a -t ${LVS_SERVER_VIP}:${TEST_PORT} -r ${hosts[$i]}:${TEST_PORT} -w ${WTest[$i]} -g
fi
        i=$(( $i + 1))
done

ipvsadm -Ln

可以看到:

[root@mgt zmq]# ./ipvsadm.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.253.110:8080 wrr
  -> 192.168.253.101:8080         Route   100    0          0
  -> 192.168.253.102:8080         Route   100    0          0
  -> 192.168.253.103:8080         Route   100    0          0
  -> 192.168.253.104:8080         Route   80     0          0
  -> 192.168.253.105:8080         Route   80     0          0
TCP  192.168.253.110:9527 wrr
  -> 192.168.253.101:9527         Route   100    0          0
  -> 192.168.253.102:9527         Route   100    0          0
  -> 192.168.253.103:9527         Route   100    0          0
  -> 192.168.253.104:9527         Route   80     0          0
  -> 192.168.253.105:9527         Route   80     0          0
TCP  192.168.253.110:35569 wrr
  -> 192.168.253.101:35569        Route   100    0          0
  -> 192.168.253.102:35569        Route   100    0          0
  -> 192.168.253.103:35569        Route   100    0          0
  -> 192.168.253.104:35569        Route   80     0          0
  -> 192.168.253.105:35569        Route   80     0          0

(4)执行脚本lvsstatus.sh,可查看LVS转发状态,脚本为:

#!/bin/bash
echo "geohpc" | /usr/bin/sudo -S ipvsadm -L

结果如下图(共分发了1个绘图请求-端口9527,5个算法计算请求-端口35569):

 

 

 


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • java线程池的实现原理源码分析
    这篇文章主要介绍“java线程池的实现原理源码分析”,在日常操作中,相信很多人在java线程池的实现原理源码分析问题上存在疑惑,小编查阅了各式资 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 学习笔记17:Opencv处理调整图片亮度和对比度
    一、理论基础在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式:在图像像素中其中:参数f(x)表示源图像像素。参数g(x)表示输出图像像素。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
  • 之前项目在windows2003服务器上设置定时任务,每天执行。现在把项目移植到linux系统。也要在linux系统上设置计划任务。但是之前我从来没有做过。所以多得不 ... [详细]
  • \\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*if(string.IsNullOrEmpty(Tex ... [详细]
author-avatar
mobiledu2502904157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有