最近想搭一个Hadoop的集群,但是迫于硬件环境有限,于是使用了5个虚拟机来进行,基本环境如下图: 然后我简单描述一下我的设计方案:
小集群内部可以相互访问集群内每个主机都可以访问外网外部网的任何主机都不能直接访问内部任何一台主机,但可以访问Server_main,以便对内部进行管理使用Server_main为网关和防火墙内部主机之间使用集线器连接主机1,2,3,4 需要从Server_main动态获取IP下面就是配置网络相关信息: Server_main: 系统:CentOS 7.3 首先保证Server_main具有两部网卡,关于硬件的安装,这里不赘述了 我的两部网卡信息:
网卡一: 网卡名:eno16777736MAC:00:0c:29:8e:fe:44网卡二: 网卡名:eno33554984MAC:00:0c:29:8e:fe:4e配置文件内容:
网卡一:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes NAME=eno16777736 UUID=7ba0c495-599e-4a35-8016-d21744374984 DEVICE=eno16777736 IPADDR=192.168.1.1 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes网卡二:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes NAME=eno33554984 DEVICE=eno33554984 GATEWAY=192.168.30.2 ONBOOT=yesDHCP的配置文件为:
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf | grep '^[^#]' default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.2 192.168.1.100; option routers 192.168.1.1; option domain-name-servers 114.114.114.114; option broadcast-address 192.168.1.255; default-lease-time 3600; max-lease-time 12800; }按上面配置文件配置后,Server_main就可以提供DHCP服务服务了,但是这只是第一步,下面配置客户端:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes NAME=eno16777736 UUID=7ba0c495-599e-4a35-8016-d21744374984 DEVICE=eno16777736 ONBOOT=yes然后,客户端的网络基本就搭建好了 但是现在内部网络内的主机无法上网,那是因为Server_main没有设置数据转发,数据包无法被发到外部,因此我就开始来设置网关的数据转发
关闭防火墙 查看防火墙状态 [root@localhost ~]# systemctl status firewalld.service可以看到状态是running,于是我们需要关闭,如果是 Active是inactive (dead),则表明你已经关闭防火墙
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service已经关闭成功
禁止防火墙开机自启
[root@localhost ~]# systemctl disable firewalld.service安装iptables
[root@localhost ~]# yum install iptables.x86_64 [root@localhost ~]# yum install iptables-services将iptables加入开机启动
[root@localhost ~]#systemctl enable iptables.service设置内核参数,使其支持数据转发
[root@localhost ~]# cat /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@localhost ~]# sysctl -p #不用重启启用更新 net.ipv4.ip_forward = 1配置数据转发策略:
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.30.132 #将内网的数据转发到外网,192.168.30.132为对外网口的IP [root@localhost ~]# iptables-save > /etc/sysconfig/iptables # 将更改保存至文件,以使主机重启后依然有效