linux集群之LVS入门和企业级实战(续一)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

一、NAT模型实验:

1、安装ipvsadm

通常ipvs在linux内核中会有支持,可以查看内核配置文件检查是否支持。

[root@localhost ~]# grep -i ipvs /boot/config-2.6.32-573.el6.x86_64 

# IPVS transport protocol load balancing support

# IPVS scheduler

# IPVS application helper


检查linux是否安装了ipvsadm。

[root@localhost ~]# rpm -ql ipvsadm

/etc/rc.d/init.d/ipvsadm

/etc/sysconfig/ipvsadm-config

/sbin/ipvsadm

/sbin/ipvsadm-restore

/sbin/ipvsadm-save

/usr/share/doc/ipvsadm-1.26

/usr/share/doc/ipvsadm-1.26/README

/usr/share/man/man8/ipvsadm-restore.8.gz

/usr/share/man/man8/ipvsadm-save.8.gz

/usr/share/man/man8/ipvsadm.8.gz


安装ipvsadm工具包

[root@localhost ~]# yum install ipvsadm

已加载插件:fastestmirror

设置安装进程

Loading mirror speeds from cached hostfile

 * base: mirrors.tuna.tsinghua.edu.cn

 * extras: mirrors.btte.net

 * updates: mirrors.tuna.tsinghua.edu.cn

包 ipvsadm-1.26-4.el6.x86_64 已安装并且是最新版本


2、常用命令讲解

ipvsadm -A|E -t|u|f service-address [ -s scheduler] [-p [timeout]] [-o] [-M netmask]

-A:创建一个负载均衡的方法,指明规则、模型。

-E:编辑负载均衡的方法。

-t|u|f:指定服务器工作在哪个协议上。工作在网络层

service-address:指定vip:port

-s:指定调度方法。rr、wrr、ldlc、


-D:删除一个负载均衡方法。

ipvsadm -a|e -[tuf] service-address -r real-serveraddress -[gim] [-w weight] [-x upper] [-y lower]

-a|e:添加、编辑一个负载均衡方法,实际就是添加rip。

指定lvs模型类型:

-g:DR模型、默认

-i:tun模型

-m:nat模型


查看ipvsadm工作状态

主参数:-L 查看ipvsadm状态

辅助参数:—stats -n

3、保存配置文件

service ipvsadm save

默认存储位置:/etc/sysconfig/ipvsadm

手动指定保存位置:ipvsadm -S >/root/ipvsadm.conf

[root@localhost ~]# ipvsadm -S >/root/ipvsadm.conf

[root@localhost ~]# more ipvsadm.conf 

-A -t 10.40.0.230:http -s wrr


手动恢复保存的配置文件:ipvsadm -r </root/ipvsadm.conf

[root@localhost ~]# ipvsadm -R </root/ipvsadm.conf 

[root@localhost ~]# service ipvsadm status

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.230:80 wrr



4、实例配置nat负载均衡模型

将DR负载均衡器设置为可以实现转发功能:echo “1” /proc/sys/net/ipv4/ip_forward

关闭防火墙相关选项。

创建负载均衡的工作方式及查看状态。

[root@localhost ~]# ipvsadm -A -t 10.40.0.230:80 -s wrr

[root@localhost ~]# service ipvsadm status

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.230:80 wrr


添加RIP主机到负载均衡LVS中。

[root@localhost ~]# ipvsadm -a -t 10.40.0.230:80 -r 192.168.1.10 -m 

[root@localhost ~]# ipvsadm -a -t 10.40.0.230:80 -r 192.168.1.20 -m 


查看ipvsadm当然工作状态。

[root@localhost ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.230:80 wrr

  -> 192.168.1.10:80              Masq    1      0          0         

  -> 192.168.1.20:80              Masq    1      0          0         



lvs配置很简单,应用中注意各个网卡的设置,特别是路由设置,建议检查一下,通常使用虚拟机时这些问题注意的比较多。


二、DR模型实验


1、禁止realserver上的VIP直接和前端路由进行通信的三种方案:

1、修改路由,使用静态arp,arp绑定

2、在realserver上使用arptables,禁止响应对vip的广播请求。

3、在realserver上修改其内核参数,并将vip配置在与rip不同的接口上,通常是lo。

arp_ignore:用来定义arp响应限制级别
                0:响应任意本地接口的请求
                1:如果目的ip地址是本地进入的接口,就响应,非直连接口不响应。

     arp_announce:定义arp通告级别
     0:通告任何针对本地地址的请求,任意端口都通告。
     1:尽量不通告目标接口不是此接口的请求,比如eth0接口不会通告针对本地eth1接口的请求。
     2:使用最合适的本地接口进行通告。绝对不响应非本接口请求,比2严格。


2、强制realserver使用vip作为源地址发送响应报文,通常使用一条路由在进行强制。


3、网络规划

3.1RIP/DIP/VIP在同一个网络中,网关可以指向同一个路由,配置最简单。

242344.tmp

我的实验是在虚拟机上完成的,具体虚拟机配置如下:

director server

eth0:10.40.0.58 桥接模式

[root@localhost ~]# ifconfig eth0:1 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@localhost ~]# route add -host 10.40.0.51 dev eth0:1

[root@localhost ~]# ipvsadm -A -t 10.40.0.51:80 -s wlc

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.54:80 -g -w 1

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.55:80 -g -w 1

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.56:80 -g -w 1

[root@localhost ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.51:http wlc

  -> 10.40.0.54:http            Route   1      0          0         

  -> 10.40.0.55:http            Route   2      0          0         

  -> 10.40.0.56:http            Route   2      0          0         


Realserver1:

eth0:10.40.0.54 桥接模式

Realserver2:

eth0:10.40.0.55 桥接模式

Realserver3:

eth0:10.40.0.56 桥接模式

具体配置如下:

[root@10.40.0.54~]$ifconfig eth0 10.40.0.54/24

[root@10.40.0.54~]$ echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@10.40.0.54~]$ echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@10.40.0.54~]$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@10.40.0.54~]$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@10.40.0.54 ~]# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@10.40.0.54 ~]# route add -host 10.40.0.51 dev lo:0


[root@10.40.0.55~]$ifconfig eth0 10.40.0.55/24

[root@10.40.0.55~]$ echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@10.40.0.55~]$ echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@10.40.0.55~]$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@10.40.0.55~]$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@10.40.0.55 ~]# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@10.40.0.55~]# route add -host 10.40.0.51 dev lo:0

[root@10.40.0.56~]$ifconfig eth0 10.40.0.56/24

[root@10.40.0.56~]$ echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@10.40.0.56~]$ echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@ 10.40.0.56~]$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@10.40.0.56~]$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@10.40.0.56~]# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@10.40.0.56~]# route add -host 10.40.0.51 dev lo:0

3.2RIP同VIP不在同一个网段,在需要另外指定添加一个路由器用于和rip相连,并指定网关为此路由器,然后此路由在自由选择出口方法

717471.tmp

我的实验是在虚拟机上完成的,具体虚拟机配置如下:

director server

eth0:10.40.0.58 桥接模式  有线网卡

eth1:192.168.1.10 桥接模式   wifi网卡

具体配置如下:

1、配置vip、dip(dip就是eth1的ip地址了),关闭防火墙,开启ip_forward转发

[root@localhost ~]# ifconfig eth0:1 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@localhost ~]# route add -host 10.40.0.51 dev eth0:1

[root@localhost ~]# ipvsadm -A -t 10.40.0.51:80 -s wlc

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.54:80 -g -w 1

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.55:80 -g -w 1

[root@localhost ~]# ipvsadm -a -t 10.40.0.51:80 -r 10.40.0.56:80 -g -w 1

[root@localhost ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  10.40.0.51:http wlc

  -> 192.168.1.11:http            Route   1      0          0         

  -> 192.168.1.12:http            Route   2      0          0         

Realserver1:

eth0:10.40.0.54 桥接模式   wifi网卡

Realserver2:

eth0:10.40.0.55 桥接模式   wifi网卡

Realserver3:

eth0:10.40.0.56 桥接模式   wifi网卡

[root@192.168.1.11~]$ifconfig eth0 192.168.1.11/24

[root@192.168.1.11~]$ echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@192.168.1.11~]$ echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@192.168.1.11~]$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@192.168.1.11~]$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@localhost ~]# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@localhost ~]# route add -host 10.40.0.51 dev lo:0

[root@192.168.1.11~]$route add default gw 192.168.1.1


[root@192.168.1.11~]$ifconfig eth0 192.168.1.12/24

[root@192.168.1.11~]$ echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@192.168.1.11~]$ echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@192.168.1.11~]$ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@192.168.1.11~]$ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@localhost ~]# ifconfig lo:0 10.40.0.51 broadcast 10.40.0.51 netmask 255.255.255.255 up

[root@localhost ~]# route add -host 10.40.0.51 dev lo:0

[root@192.168.1.11~]$route add default gw 192.168.1.1


本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968766,如需转载请自行联系原作者

相关文章
|
19天前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
55 3
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
230 73
|
1月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
58 1
|
1月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
31 0
Linux入门1——初识Linux指令
|
1月前
|
存储 数据可视化 Linux
Linux 基础入门
Linux 基础入门
|
2月前
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
|
1月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
26 0
|
3月前
|
Linux 文件存储 数据安全/隐私保护
Linux用户组管理实战:创建、管理与删除的全面指南
在 Linux 系统中,用户组管理是实现权限控制和资源共享的关键。本文档详细介绍如何创建用户组、管理用户组成员及查看与删除用户组。首先,通过 `groupadd` 命令创建新用户组,并在 `/etc/group` 文件中记录。接着,利用 `usermod` 和 `gpasswd` 命令来添加或删除用户组成员,其中 `gpasswd` 提供更灵活的管理方式。最后,使用 `getent` 或直接读取 `/etc/group` 查看用户组信息,并通过 `groupdel` 删除空用户组。这些操作有助于高效管理和保护系统资源。
317 4
|
3月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
56 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
3月前
|
运维 负载均衡 监控
"Linux高可用集群背后的神秘力量:揭秘心跳机制,如何确保服务永不掉线?"
【8月更文挑战第21天】今天探讨Linux高可用集群中的心跳机制——节点间定期发送信号以确认彼此状态的关键技术。它主要用于故障检测、负载均衡及资源接管。示例代码展示如何使用Corosync+Pacemaker配置心跳,确保服务连续性与可靠性。正确配置心跳机制能够显著提升系统的稳定性。
55 1
下一篇
无影云桌面