快速学习:如何在 Linux 上创建 VIP (linux 创建vip)

在计算机网络架构中,VIP(Virtual IP)是指一个虚拟的IP地址,可以分配给多个不同的物理主机,使得它们看起来像是一个单独的主机。这种技术在一定程度上提高了网络的可靠性和可用性,因为当一个物理主机出现故障时,其他主机可以接管它的 VIP,并继续提供服务。在 Linux 系统中,创建 VIP 是一个简单而重要的操作,本文将详细介绍这个过程。

一、创建 VIP 的前提条件

在开始创建 VIP 之前,需要明确以下几点:

1. Linux 系统必须在一个子网内;

2. 子网掩码必须是255.255.255.0;

3. 如果系统会用到多个 VIP,则需要把多个 VIP 统一放在一个 VLAN(虚拟局域网)里。

以上条件不满足的话就不可能创建 VIP,因此先行检查下。

二、创建 VIP 的流程

1. 配置网卡

一般情况下,我们需要对网卡进行配置,才能使其支持 VIP。以 CentOS 7 为例,在命令行中执行以下命令:

“`

$ vi /etc/sysconfig/network-scripts/ifcfg-ens33

“`

(ens33 为网卡名,具体情况根据实际调整。)

编辑这个文件,加入以下内容:

“`

DEVICE=ens33:0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.0.199

NETMASK=255.255.255.0

“`

以上内容是:将网卡名称更改为“ens33:0”,设置静态IP地址为192.168.0.199/24,开机自动启动这个网卡。

2. 禁用 ARP

在使用 VIP 时,需禁用 ARP(地址解析协议),否则会发生 IP 冲突的错误。通常情况下可以在防火墙中进行禁用。

在 CentOS 7 下,可以使用以下命令禁用 ARP:

“`

$ echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore

$ echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce

“`

3. 测试 VIP

完成以上两个步骤后,就可以测试 VIP 是否正常工作了。可以使用以下命令检查是否绑定 VIP:

“`

$ ip a | grep ens33:0

“`

如果返回结果中有正在使用的 VIP 地址,则说明 VIP 已经绑定成功了。

4. 配置应用程序

需要应用程序支持 VIP,例如,如果需要在一个 Web 服务器上使用 VIP,则需要修改相关的配置文件,使它们在使用 VIP 后能够正常运行。

假设我们要使用 VIP 地址来访问 Apache Web 服务器,则需要编辑 Apache 的主配置文件 /etc/httpd/conf/httpd.conf,修改 ServerName 和 Listen 属性,设置为 VIP 地址就可以了。例如:

“`

ServerName 192.168.0.199:80

Listen 192.168.0.199:80

“`

保存修改后,重启 Apache 服务器,即可在浏览器中使用 VIP 地址来访问了。

三、

通过本文的介绍,我们可以了解到,创建 VIP 地址是一个简单但极为重要的过程,它可以增强 Linux 系统在网络中的可用性和可靠性。在实际应用中,需要根据实际情况调整网卡配置、禁用 ARP、测试 VIP 和配置应用程序等步骤,才能完成 VIP 地址的创建和使用。希望本文能够帮助读者加深对 VIP 技术的理解,进一步提高 Linux 系统的网络架构水平。

相关问题拓展阅读:

linux实现HA有几种方法

【实验配置环境】

服务器系统:CentOS-5.6

LVS主节点(lvs-master):192.168.2.250(eth0) 心跳直连接口:192.168.1.250(eth1)

LVS备节点(lvs-backup):192.168.2.251(eth0) 心跳直连接口:192.168.1.251(eth1)

Web Server-1:192.168.2.252

Web Server-2:192.168.2.253

VIP(虚拟ip):192.168.2.254

注:4台服务器已经配置好LNMP(Linux+Nginx+PHP(FastCGI模式)+mysql)网站运行环境,当然使用apache也可以。这里主备节点也当作真实服务器使用,所以也配置了网站环境。

本文配置拓扑图:

主备调度器eth1接口使用交叉线相连(理册运源论上是这样)

线序为: 一头为568A标准:白绿,绿;白橙,蓝;白蓝,橙;白棕,棕

另一头为568B标准:白橙,橙;白绿,蓝;白蓝,绿;白棕,棕

在LVS主节点和备节点的/etc/hosts中加入以下内容:

#vim /etc/hosts

192.168.2.250 lvs-master

192.168.2.251 lvs-backup

修改主机名:悄中

# vim /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

hostname=lvs-master

GATEWAY=192.168.2.1

# vim /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 lvs-master localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

这2个文件都要修改,修改完后重启生效,备份机修改方法一样,不在重述。

【下载软件】

wget

wget

wget

wget

wget

一、 配置LVS主节点(lvs-master)

1. 安装libnet

# tar zxvf libnet-1.1.2.2.tar.gz

# cd libnet

# ./configure

# make && make install

# cd ..

2. 安装ipvsadm

# yum install kernel-devel //安装对应内核的kernel-devel

# tar zxvf ipvsadm-1.24.tar.gz

# cd ipvsadm-1.24

# ln -s /usr/src/kernels/`ls /usr/src/kernels/` /usr/src/linux //将当前使用内核连接到/usr/src/linux

# make && make install

# cd..

3. 安装Heartbeat

3.1 确认系统已经安装以下软件(系统光盘中有)

libxslt、libxslt-devel、libgcrypt-devel、autoconf、州态automake、pkgconfig、libgpg-error-devel、libtool、sgml-common、opensp、openjade、xml-common、docbook-dtds、docbook-style

如果在编译安装过程中出错,很有可能是因为缺少了相关的软件包

3.2 安装glue

# groupadd haclient

# useradd -g haclient -M -s /in/nologin hacluster

# tar jxvf glue-1.0.7.tar.bz2

# cd Reusable-Cluster-Components-glue–glue-1.0.7/

# ./autogen.sh

# ./configure

# make && make install

# cd ..

3.3 安装 agents

# tar zxvf ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz

# cd ClusterLabs-resource-agents-c06b6f3/

# ./autogen.sh

# ./configure

# make && make install

# cd..

3.4 安装Heartbeat

# tar jxvf Heartbeat-3-0-STABLE-3.0.4.tar.bz2

# cd Heartbeat-3-0-STABLE-3.0.4

# ./ConfigureMe configure

# gmake && make install

# cd..

4. 配置lvs启动脚本

本实验采用的是lvs-DR模式,该模式的特点是客户端的请求从主/备节点进入分配到web server,然后web server的响应是直接交付给客户端的。

# vim /etc/init.d/lvs

#!/bin/sh

#chkconfig:

#description: start_lvs_of_dr

VIP1=192.168.2.254

RIP1=192.168.2.250

RIP2=192.168.2.251

RIP3=192.168.2.252

RIP4=192.168.2.253

./etc/rc.d/init.d/functions

case “$1” in

start)

echo “开启LVS DirectorServer…”

#设置虚拟IP地址

#LVS启动时添加VIP的网口eth0:0

/in/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up

/in/route add -host $VIP1 dev eth0:0

#清除IPVS表

/in/ipvsadm -C

#设置LVS

/in/ipvsadm -A -t $VIP1:80 -s lc

/in/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g

/in/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g

/in/ipvsadm -a -t $VIP1:80 -r $RIP3:80 –g

/in/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g

#使用ipvsadm来转发客户端请求。-s lc为最小连接数算法,-g是采用DR模式。有多少RIP就添加几条记录。

#启动LVS

/in/ipvsadm

;;

stop)

echo “停止LVS DirectorServer…”

#关闭时清除ipvsadm表

/in/ipvsadm –C

;;

*)

echo “Usage: $0 {start|stop}”

exit 1

esac

注:这个脚本不要使用chkconfig管理,放入/etc/init.d内即可。

5. 安装ldirectord相关组件

默认安装完上面的三个软件包之后,ldirectord已经安装到系统中,默认路径在 /usr/etc/ ,由于ldirectord是由perl语言编写的,所以必须安装相关的软件包:Socket6、libwww-perl、URI、MailTools、HTML-Parser

# yum -y install perl-Socket6 perl-libwww-perl perl-URI perl-MailTools perl-HTML-Parser

也可以在

网站下载相关软件包安装

安装方法:

# perl Makefile.PL

# make && make install

6. 配置heartbeat

# cp -a /usr/etc/ha.d/ /etc/

# rm -fr /usr/etc/ha.d/

# ln -s /etc/ha.d/ /usr/etc/

# cp /usr/share/doc/haresources /etc/ha.d/

# cp /usr/share/doc/authkeys /etc/ha.d/

# cp /usr/share/doc/ha.cf /etc/ha.d/

# chmod 600 /etc/ha.d/authkeys //这个文件的权限必须是600

6.1 修改配置文件

6.1.1 authkeys文件配置(authkeys文件的作用是用来设置心跳信息的加密方式)

vim /etc/ha.d/authkeys

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

此设置是使用crc循环冗余校验,不采用加密的方式。

6.1.2 ha.cf为heartbeat的主配置文件,修改下面配置。

# vim /etc/ha.d/ha.cf

#日志文件位置

logfile /var/log/ha-log

#指定主备服务器多久发送一次心跳

keepalive 2

#指定30秒没有收到对方心跳就认为对方已经down机

deadtime 30

#10秒没有收到心跳,便发出警报。

warntime 10

#对方DOWN后120秒重新检测一次。

initdead 120

#指定监听端口

udpport 694

#心跳监听网口,这里为eth1

bcast eth1 //去掉后面#linux

#备份机的心跳线接口与接口IP

ucast eth1 192.168.1.251

#主节点恢复后,自动收回资源。

auto_failback on

#指定主备服务器的主机名称,即在hosts文件中指定的。之一个node为主服务器,第二个node为备服务器。

node lvs-master //服务器的主机名

node lvs-backup

#当192.168.2.1、192.168.2.2这两个IP都不能ping通时,对方即开始接管资源。

ping_group group1 192.168.2.1 192.168.2.2

#启用ipfail脚本

respawn root /usr/lib/heartbeat/ipfail

#指定运行ipfail的用户。

apiauth ipfail gid=root uid=root

6.1.3 haresources文件配置,这个文件是指定虚拟IP和改主机控制的脚本。

# vim /etc/ha.d/haresources

lvs-master 192.168.2.254 lvs ldirectord

// master.lvs.net可为主节点主机名,192.168.2.254为虚拟IP

6.1.4 ldirectord.cf是ldirectord进程的配置文件,该进程用来监视web server的运行状况,如果web server不能响应请求则把它排除在转发列表外。

复制安装文件ldirectord目录上的ldirectord.cf 到/etc/ha.d/conf下,如果找不到可以查找一下:find / -name ldirectord.cf

# mkdir /etc/ha.d/conf

# cp ldirectord.cf /etc/ha.d/conf

# vim /etc/ha.d/conf/ldirectord.cf

# Global Directives

#设置真实web server的超时时间

checktimeout=30

#监视真实web server的时间间隔

checkinterval=10

#如全部真实web server失败,则转发至本地

fallback=127.0.0.1:80

#改变配置文件内容,不需要重新ldirectord

autoreload=yes

#指定日志位置

logfile=”/var/log/ldirectord.log”

quiescent=no

# A sample virual with a fallback that will override the gobal setting

#指定虚拟IP

virtual=192.168.2.254:80

#指定真实web server IP及监听端口

real=192.168.2.250:80 gate

real=192.168.2.251:80 gate

real=192.168.2.252:80 gate

real=192.168.2.253:80 gate

fallback=127.0.0.1:80 gate

service=http

#指定转发算法

scheduler=lc //这里的算法要和LVS脚本的算法一样

protocol=tcp

#监视VIP服务器的方法

checktype=negotiate

checkport=80

#监听测试页面名称,这个页面放入真实web server web服务的根目录

request=”lvs_testpage.html”

#指定测试页面返回内容

receive=”test Page”

virtualhost= lvstest.net

配置文件中的lvs_testpage.html必须存在网站根目录下,校验一下配置:

# ldirectord -d /etc/ha.d/conf/ldirectord.cf start //按Ctrl+C结束

# cp /etc/ha.d/shellfuncs /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs

以上lvs和heartbeat配置完成。

LVS备节点(lvs-backup)的配置和LVS主节点(lvs-master)完全一样。

只是在/etc/ha.d/ha.cf中“ucast eth1 192.168.1.251”此配置地址不一样。

二、配置真实web server脚本

在每台web server的/etc/init.d目录下放置realserver脚本,这里主备节点同时也作为web server使用。

# vim /etc/init.d/realserver

#!/bin/bash

# chkconfig:

# description: lvs_dr_realserver

#指定虚拟IP

VIP=192.168.2.254

host=`/bin/hostname`

case “$1” in

start)

# Start LVS-DR real server on this machine.

/in/ifconfig lo down

/in/ifconfig lo up

#修改相关内核参数

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

/in/ifconfig lo:0 $VIP netmask 255.255.255.255 up

/in/route add -host $VIP dev lo:0

;;

stop)

# Stop LVS-DR real server loopback device(s).

/in/ifconfig lo:0 down

;;

status)

# Status of LVS-DR real server.

islothere=`/in/ifconfig lo:0 | grep $VIP`

isrothere=`netstat -rn | grep “lo” | grep $VIP`

if ;

then

# Either the route or the lo:0 device

# not found.

echo “LVS-DR real server Stopped.”

else

echo “LVS-DR Running.”

fi

;;

*)

# Invalid entry.

echo “$0: Usage: $0 {start|status|stop}”

exit 1

;;

esac

# chmod +x /etc/init.d/lvs

# chmod +x /etc/init.d/realserver

# service heartbeat start //主备LVS调度器上执行

# /etc/init.d/lvs start //主备LVS调度器上执行

# /etc/init.d/realserver start //真实web服务器上执行

# chkconfig –level 35 heartbeat on

# echo “/etc/init.d/lvs start” >> /etc/rc.local //开机启动

# echo “/etc/init.d/realserver start” >> /etc/rc.local //开机启动

三、测试

linux 创建vip的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 创建vip,快速学习:如何在 Linux 上创建 VIP,linux实现HA有几种方法的信息别忘了在本站进行查找喔。


数据运维技术 » 快速学习:如何在 Linux 上创建 VIP (linux 创建vip)