Linux环境下配置虚拟ip,方法2:单网卡绑定多IP

http://blog.csdn.net/u010028869/article/details/50574907

写这篇博客是因为,后面在使用keepalived 实现Nginx高可用时 需要用到这项技术。虚拟ip在高可用中的作用后续再说。今天看看怎么给服务器配置虚拟IP,其实也就是多分配个IP地址。


① 首先查看一下现有网卡的IP地址,用root特权运行下面的命令

ip addr

示例输出:

Linux环境下配置虚拟ip,方法2:单网卡绑定多IP_第1张图片

从上面的详细信息中,可以看到服务器的网卡名是eno16777736,ip地址是192.168.22.227。

网卡的配置文件存储在 /etc/sysconfig/network-scripts/ 目录下。每个网卡的详细内容将会以不同的名字存储,比如ifcfg-eno16777736。


② 打开此配置文件,并且再添加一个IP地址

编辑文件 /etc/sysconfig/network-scripts/ifcfg-eno16777736:

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

像下面那样加入额外的IP地址。

Linux环境下配置虚拟ip,方法2:单网卡绑定多IP_第2张图片

这样就添加了一个IP地址:IPADDR1=”192.168.22.231″当然,也可以添加更多的ip地址。 
IPADDR2=”192.168.22.232″…

最后,保存并退出文件。快捷键:shift+z+z

重启网络服务来使更改生效。

systemctl restart network

③ 检查一下是否已经加入了ip地址。ifconfig看不到多IP

输入命令:

ip addr

示例输出:

Linux环境下配置虚拟ip,方法2:单网卡绑定多IP_第3张图片

如你所见,单个网卡已经有2个ip地址了。


------------------------------------------

一、firecat注:其实这个方法就是:

Linux环境下配置虚拟ip,方法2:单网卡绑定多IP_第4张图片

当服务器出现多IP时,TCP listen怎么工作?我的C语言版本的TCP服务器程序,绑定地址写INADDR_ANY,意味着两个IP都同时支持客户端接入。

[html]  view plain  copy
  1. bzero(&servaddr,sizeof(servaddr));  
  2. servaddr.sin_family = AF_INET;  
  3. servaddr.sin_addr.s_addr = htonl(INADDR_ANY);  
  4. servaddr.sin_port = htons(port);  
  5. if (bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1)  

[root@localhost ~]# netstat -nalp|grep 1883
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      6333/epltest

如果绑定地址分别写172.16.6.161和172.16.6.162,则

[root@localhost ~]# netstat -nalp|grep 1883
tcp        0      0 172.16.6.161:1883       0.0.0.0:*               LISTEN      6723/epltest        
tcp        0      0 172.16.6.162:1883       0.0.0.0:*               LISTEN      6688/epltest        

说明1883端口可以分别被不同IP使用。


二、两篇博客的总结

1、问:“虚IP:eth0:1 这一类”和“在现有的IP里增加了一个IP地址,也就是多ip,ipadd1=....”
这两种说法是一回事吗?
答:本质是一样的吧,不过第一种比较规范,多网卡的时候格式更统一,可以通过冒号前面的数字区分网卡,所以推荐第一种

2、方法简述

(1)方法1

网卡上增加一个IP:
ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0
删除网卡的第二个IP地址:
ip addr del 192.168.0.1 dev eth0
这种方式增加的虚拟IP,可以通过ifconfig查看
(2)方法2
另一种增加虚拟IP的方法(ifconfig查看不到):
增加虚拟IP:
ip -f inet addr add 192.168.146.229/32 brd 192.168.146.229 dev eth0
查看虚拟IP:
ip -f inet addr
删除虚拟IP:
ip -f inet addr delete 192.168.146.229/32 brd 192.168.146.229 dev eth0


---

推荐好文:

http://blog.csdn.net/u010028869/article/category/6097956

http://blog.csdn.net/u010028869/article/category/6097959

你可能感兴趣的:(Linux,集群/高可用)