Chinaunix首页 | 论坛 | 博客
  • 博客访问: 823012
  • 博文数量: 137
  • 博客积分: 3477
  • 博客等级: 中校
  • 技术积分: 1409
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-30 21:53
文章分类

全部博文(137)

文章存档

2024年(8)

2023年(10)

2022年(4)

2021年(10)

2020年(9)

2018年(1)

2017年(1)

2014年(4)

2013年(3)

2012年(12)

2011年(24)

2010年(2)

2009年(8)

2008年(6)

2007年(34)

2006年(1)

分类: 其他UNIX

2024-06-27 15:42:09

一、虚拟 ip 技术存在的价值与意义说明
      很多时候,我们很难理解为什么需要在一台机器上实现同一个网卡两个 ip 地址(一个实际的 ip , 一个虚拟的 ip)。
      我们想象这样一个场景:
      我们有两台数据服务器,做主、备机双活处理,当其中的一台数据服务器出现故障的时候,另一台数据服务器能自动接管服务,从而保证系统的高可用性。
      那么我们需要如何搭建这样的系统呢?
      我们的应用服务器需要连接到数据服务器进行数据访问,如果我们的应用服务访问的数据库服务器的 IP 地址是一个物理的 ip 地址,当数据服务器出现问题造成无法访问的时候,我们需要将应用服务器停下来,修改数据库访问的连接配置信息,使之指向数据服务的备机,然后重启应用服务,这在实际的业务场景中是很难实现高可用性的。
      那么有没有一个办法来保证当数据服务器(主)出现问题的时候,数据服务器(备)自动接管,而且应用服务器不用停下来修改数据库的连接配置呢?我们自然会想到如果两台数据服务器的 ip 地址是同一个,不是就可以不用修改应用服务连接数据库的配置信息了吗?很遗憾,如果两台机器的物理 IP 地址相同,会在网络中引起 ip 地址冲突,从而造成两台数据服务器的网络混乱,停止网络服务。于是,虚拟 ip 技术就应运而生了。
       虚拟 ip ,就是在物理网卡的上通过网络设备别名的方式来指定另一个虚拟的网络设备,从而绑定一个 ip 地址的技术,本质上,这个 ip 地址是虚拟的,它既能提供实际的网络访问(通过 ip 地址映射的方式),同时又不会造成网络中出现两台相同的 IP 地址的机器而造成网络混乱。这就从根本上解决了上述的应用场景面临的难题。

2、在 SCO OpenServer 5.0.7 系统上设置虚拟 ip   
     编辑 /etc/tcp 文件,找到带有 ifconfig -p net0 的那一行(就是设置 网卡 ip 地址的那一行),在其下面添加如下一行。

点击(此处)折叠或打开

  1. ifconfig net0 alias 192.168.137.119 netmask 255.255.255.0 broadcast 192.168.137.255 perf 32768 32768 1
      这句话的意思是对 net0 添加一个虚拟的 ip 地址 192.168.137.119 。
     
3、重启 SCO OpenServer 5.0.7
     # reboot

4、在 SCO OpenServer 6.0Ni 系统上设置虚拟 ip   
     编辑 /etc/tcp 文件,找到如下内容:     

点击(此处)折叠或打开

  1. # set default route (deleting any previous one that may exist)
  2. [ -n "$GATEWAY" ] && {
  3.         route delete default >&- 2>&-
  4.         route add default $GATEWAY $DFLTMETRIC
  5. }
在其下面添加如下一行。

点击(此处)折叠或打开

  1. ifconfig net0 alias 192.168.137.119 netmask 255.255.255.0 broadcast 192.168.137.255 perf 32768 32768 1
      这句话的意思是对 net0 添加一个虚拟的 ip 地址 192.168.137.119 

5、重启 SCO OpenServer 6
     # reboot

6、在 Windows 系统上执行 ping 命令,检查网络的状况。
     c:\> ping 192.168.137.119 -t
     我们这个时候会发现 192.168.137.119 的网络是通的。

7、在 Linux 系统上执行 ssh 命令,登录 192.168.137.119
     $ ssh work@192.168.137.119
     输入登录密码后,执行 uname 命令查看登录的是哪台服务器。
     $ uname -X
     我们可以看到登录的是 SCO OpenServer 5.0.7 的服务器

8、关闭 SCO OpenServer 5.0.7 服务器
     以 root 用户登录系统后执行如下命令关闭 SCO OpenServer 5.0.7
     # haltsys

9、监控 Windows 系统上的 ping 窗口,我们会发现 192.168.137.119 的网络会短暂断开,然后再次响应 Windows 的 ping 服务,并且能正确的返回网路连通的状态信息。

10、再次在 Linux 系统上执行 ssh 登录 192.168.137.119 服务器
      $ ssh work@192.168.137.119
      $ uname -X
      这时我们会发现,提供 ssh 服务的机器变成了 SCO OpenServer 6.0 的机器。


PS:
======================================================
对于虚拟的 IP 地址而言,谁先占用,这个地址就暂时归谁使用。在我们上面的例子中,
我们先启动了 SCO OpenServer 5.0.7 的服务器,因此首次 ping 和执行 ssh 登录的时候
都是 SCO OpenServer 5.0.7 的服务器提供服务,当我们关闭了 SCO OpenServer 5.0.7
的服务器后,这个 192.168.137.119 的地址才被 SCO OpenServer 6.0 的服务器接管。

阅读(381) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~