主要目标:
可以通过内网系统访问楼下机房服务器集群,楼下机房只给一个可以访问外网的IP。
现有条件:
- 只有一根可以上外网的网线
- 一台交换机
- 4台高性能服务器,每台服务器有两个网口
主要网络架构设计:
- 一台服务器为master节点
- 另外三台服务器分别为slave1,slave2,slave3
- 四台服务器安装的操作系统皆为unbuntu server
IP 分布:
- master节点eth0: 192.168.223.1 , eth1: 10.1.8.200
- slave2节点eth0: 192.168.223.2
- slave3节点eth0: 192.168.223.3
- slave4节点eth0: 192.168.223.4
网络分布示意图:
具体服务器配置:
- master节点配置ip配置,修改 /etc/network/interfaces 文件, 配置文件如下:
auto eth0 iface eth0 inet static address 192.168.223.1 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 10.1.8.200 netmask 255.255.255.0 gateway 10.1.8.254
网络配置文件修改完之后, /etc/init.d/network restart
或者 service network restart
如果重启之后还是不行,则重新启动服务器。
网络重新启动之后,执行ifconfig命令查看网口配置
这时,如果出现网口乱名的问题,即网口名字非eth0,eth1,eth2….
则执行如下配置
Edit /etc/default/grub and search for the following:GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX=""
Add biosdevname=0 to the 2 lines:
GRUB_CMDLINE_LINUX_DEFAULT="biosdevname=0" GRUB_CMDLINE_LINUX="biosdevname=0"
The run
sudo update-grub
配置结束之后,重启服务器, 然后查看 /etc/udev/rules.d/70-persistentnet.rules
有相关与网口的配置 , 具体请参考网页http://askubuntu.com/questions/578650/interface-device-name-em1-to-eth0-linux-14-04-lts然后,需要配置数据转发机制。
master上的eth0与其他slave上的eth0都通过交换机形成了一个192.168.223.0网段的一个内网。内网中的服务器全部可以互相访问。现在只有一个eht1网口用于上网。需要建立转发路由规则:进入终端, 开启路由功能,
echo "1" > /proc/sys/net/ipv4/ip_forward
这里echo时如果sudo权限不行,转入root权限操作,接着依次输入下列命令:
sudo iptables -F sudo iptalbes -P INPUT ACCEPT sudo iptalbes -P FORWARD ACCEPT sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -F 命令是删除原有的路由配置(这条命令不要随意操作,如果你原来的配置是iptables -P INPUT DROP, 那么你的远程连接很有可能断开)
正确查看路由的命令是:sudo iptables -L -n
如果sudo iptalbes -F 这条命令无效,则改换成下面这条命令:
sudo iptalbes -F -t nat
但是以上配置都是临时配置,一旦服务器关机就失效了,所以,需要将以上修改写入 /etc/rc.local文件中。
- slave节点配置 slave节点配置基本相同,如以下slave2节点配置
修改 /etc/network/interfaces如下auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.223.2 netmask 255.255.255.0 gateway 192.168.223.1
配置文件写好之后,执行生效如前所述
其他slave节点ip配置全部按照该节点配置。
配置完成之后:
所有节点配置完成之后,在每台服务器上配置ssh-server,unbutun server版本是默认配置ssh-client版本
对每个服务器执行以下命令(这个时候每台服务器是联网的)
sudo apt-get intall update
为了提高下载时的速度,需要修改下载源
进入/etc/apt/sources.list,将所有 Index of /ubuntu
中科大的下载源速度还是很快的.
更换源之后,执行以下两条命令:
sudo rm /var/lib/apt/lists/* -vf sudo apt-get update
将缓存的信息去掉
额外配置(方便部署Hadoop集群)
-
修改每台主机的 /etc/hosts, hosts内容如下(slave1这行是专门添加的):
master 192.168.223.1
slave1 192.168.223.1
slave2 192.168.223.2
slave3 192.168.223.3
slave4 192.168.223.4 -
为每台主机主机同名的 sudo 用户 hadoop (以后可能会用到),密码用 haike@99,删除原来的用户 master, slave*,使用hadoop用户,在每台机器上执行(使用一般用户权限)
ssh-keygen
ssh-copy-id master
ssh-copy-id slave2
ssh-copy-id slave3
ssh-copy-id slave4这样可以使用hadoop用户不需要密码就可以访问其他机器上的hadoop用户,使用ssh slave* 命令。
-
修改每台主机 /etc/default/locale文件, 内容改为
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_NUMERIC=”en_US”
LC_TIME=”en_US”
LC_MONETARY=”en_US”
LC_PAPER=”en_US”
LC_NAME=”en_US”
LC_ADDRESS=”en_US”
LC_TELEPHONE=”en_US”
LC_MEASUREMENT=”en_US”
LC_IDENTIFICATION=”en_US”
修改完后执行
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
具体请参考
[SOLVED] perl: warning: Setting locale failed.
如果安装的是中文环境,请进行修改。英文环境不用修改. -
给其他人添加用户时,可以去/etc/sudoers, 增加该用户的sudo权限。
- 修改DNS服务器,可以去/etc/resolv.conf,
nameserver 114.114.114.114