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

[root@mgt ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E9::
inet addr:192.168.253.100 Bcast:192.168.253.255 Mask:255.255.255.0
inet6 addr: :cc0:::5ef3:fcff:fee9:/ Scope:Global
inet6 addr: fe80::5ef3:fcff:fee9:/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (1.9 MiB) TX bytes: (4.0 MiB)
Interrupt: Memory:- eth1 Link encap:Ethernet HWaddr 5C:F3:FC:E9::7A
inet addr:172.20.0.1 Bcast:172.20.0.255 Mask:255.255.255.0
inet6 addr: :cc0:::5ef3:fcff:fee9:617a/ Scope:Global
inet6 addr: fe80::5ef3:fcff:fee9:617a/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (1.5 MiB) TX bytes: (12.3 MiB)
Interrupt: Memory:- lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (765.9 MiB) TX bytes: (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
VIP=192.168.253.110
/sbin/ifconfig eth0: 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:
sysctl -p

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

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

查看其路由表,发现新增了一条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 eth0 //新增
172.20.0.0 * 255.255.255.0 U eth1
192.168.253.0 * 255.255.255.0 U eth0
link-local * 255.255.0.0 U eth0
link-local * 255.255.0.0 U eth1
default 192.168.253.254 0.0.0.0 UG eth0

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

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

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

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

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

#!/bin/bash
setenforce
VIP=192.168.253.110
/sbin/ifconfig lo: 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:
echo "" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
[root@node01 zmq]# ./realserver.sh
setenforce: SELinux is disabled
net.ipv4.ip_forward =
net.ipv4.conf.default.rp_filter =
net.ipv4.conf.default.accept_source_route =
kernel.sysrq =
kernel.core_uses_pid =
net.ipv4.tcp_syncookies =
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 =
kernel.msgmax =
kernel.shmmax =
kernel.shmall =

再次查看网卡信息:

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

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

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

#/bin/hash
op=$
MAP_PORT=
WEB_PORT=
AL_PORT=
TEST_PORT=
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=( )
WWeb=( )
WAl=( )
WTest=( ) 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=
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 + ))
done ipvsadm -Ln

可以看到:

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

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

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

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

学习笔记(2)——实验室集群LVS配置的更多相关文章

  1. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  2. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  3. 学习笔记(5)——实验室集群LVS监控Web界面配置

    症状:通过虚拟IP能访问到监控页面:http://192.168.253.110/ipvsadm.php,但是却无法读出LVS任务分发及集群负载信息. 打开ipvsadm.php页面,源码如下: &l ...

  4. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  5. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  6. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  7. Redis学习笔记~conf自主集群模式

    回到目录 Redis自主提供了集群模式,当然也只是比较简单的读写分离模式,或者叫主从模式,它在各个redis服务端自己做数据同步机制,当然就是将主服务端的信息同步到各个slave服务器上,在客户端集成 ...

  8. 【Spark学习】Apache Spark集群硬件配置要求

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4135912.html 目录 存 ...

  9. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案

    单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...

随机推荐

  1. jdk1.8一键安装脚本(linux环境)

    1.下载jdk安装包和安装脚本 下载地址:https://pan.baidu.com/s/1bo6ADQ3 其中包括: jdk安装包:jdk-8u151-linux-x64.tar.gz jdk一键安 ...

  2. 安装Centos7 随手记

    1.老笔记本安装Centos7 配置:酷睿I3  内存8G 2.原有系统Win7 将原来的硬盘空间,调整出60G 给Centos7 用. 3.安装Centos7 图形介面的,和windows安装过程类 ...

  3. Python多线程-Event(事件对象)

    Event 事件对象管理一个内部标志,通过set()方法将其设置为True,并使用clear()方法将其设置为False.wait()方法阻塞,直到标志为True.该标志初始为False. 方法: i ...

  4. ES6快到碗里来---一个简单的爬虫指南

    学习ES6的时候,没少看ES6入门,到现在也就明白了个大概(惭愧脸).这里不谈ES6,只谈怎么把ES6的页面爬下来放到一起成为一个离线文档. 之前居然没注意过作者把这本书开源了..瞎耽误功夫...地址 ...

  5. Mysql压缩包版的安装方法详解

    Mysql安装的时候可以有msi安装和zip解压缩两种安装方式.zip压缩包解压到目录,要使用它还需对它进行一定的配置.下面对Mysql压缩包版的安装方法进行详细的描述,要是此文有不正确的认识,希望大 ...

  6. jar包运行main程序

    当把java项目打包成jar后,如何运行main函数呢? 第一种:指定运行main类: 1 java -cp test.jar com.hk.app.Application 第二种:在MANIFEST ...

  7. [Python学习笔记-004] 可变参数*args和**kwargs

    在Python中,可变参数的传递使用*args和**kwargs来实现,其中: *args表示任意个位置参数(positional argument),被表示为一个只读的数组(tuple): **kw ...

  8. spring AOP 之三:使用@AspectJ定义切入点

    @AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...

  9. (转)Java多线程学习(吐血超详细总结)

    本文转自:http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能 ...

  10. js设计模式总结5

    1.同步模块模式 随着页面功能的增加,系统的业务逻辑越来越复杂.多人开发的功能经常耦合在一起.有时分配任务给多人实现的时候,常常因为某一处功能耦合了很多人的代码,出现排队修改的现象,这很不利于团队开发 ...