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

简介:

一、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,如需转载请自行联系原作者

相关文章
|
9月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
2329 77
|
9月前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
657 23
|
10月前
|
Unix Linux Shell
Linux新手入门手册
在Linux或类Unix系统中,掌握一系列基础命令和快捷键是提升工作效率的关键。这些工具和技巧不仅能帮助用户更高效地管理系统,还能在日常使用中带来极大的便利。以下是对这些基础操作与快捷键的详细解析大全。
197 9
|
12月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
2811 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
747 3
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
173 2
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
194 1
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
157 0
Linux入门1——初识Linux指令
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。