一、环境拓扑
使用virtualbox部署服务器,其中开发机器和测试运维机都是单网卡并且使用内部网络。路由器充当网关配置双网卡(nat网卡用于上网,内部网络用于和开发机器、测试运维机通信)。所有机器选用国产麒麟v10系统。
注意:国产系统安装时,语言选择英文,选择最小镜像安装。麒麟系统nat模式下,默认不会自动激活网卡,进入系统后使用dhclient激活网卡。后面可以通过配置网卡文件自动激活网卡。
所有服务器配置:
2核4G-20G硬盘。
二、搭建过程
先安装好一台服务器(jx-dev-71),然后克隆出两台服务器jx-ops-81、jx-gateway-254。
注意:克隆时选择链接克隆。克隆完成后需要更改网卡的UUID,否则每台都一样。
jx-dev-71服务器网络配置:
内部网络:
[root@jx-dev-71 jx1206]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=a425c52c-cf03-4aed-acd4-b4e28fc7eccf
DEVICE=enp0s3
ONBOOT=yes
IPADDR=10.10.10.71
NETMASK=255.255.255.0
GATEWAY=10.10.10.254
DNS1=114.114.114.114
jx-ops-81服务器网络配置:
内部网络
[root@jx-ops-81 jx1206]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=
DEVICE=enp0s3
ONBOOT=yes
IPADDR=10.10.10.81
NETMASK=255.255.255.0
GATEWAY=10.10.10.254
DNS1=114.114.114.114
jx-gateway-254服务器网络配置:
内部网络:
[root@jx-gateway-254 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=a425c52c-cf03-4aed-acd4-b4e28fc7eccf
DEVICE=enp0s3
ONBOOT=yes
IPADDR=10.10.10.254
NETMASK=255.255.255.0
NAT网络:
[root@jx-gateway-254 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=
DEVICE=enp0s8
ONBOOT=yes
DNS1=114.114.114.114
重启网卡:
ifdwon enp0s8 ; ifup enp0s8
这里创建双网卡的目的是:开发(jx-dev-71)和运维机器(jx-ops-81)只能通过网关路由器(jx-gateway-254)上网。
服务器都部署好以后,可以互相通信的机器:
开发服务器和运维服务器
开发服务器和网关路由器
运维服务器和网关路由器
网关路由器可以上外网,但是开发服务器和运维服务器不能通过网关服务器上外网。
网关服务器需要配置DNAT以及开启内核转发。
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source 10.0.3.15
这条规则的含义是:源是10.10.10.0/24网段内的主机都转给10.0.3.15(网关服务器nat地址)。
开启内核转发:
echo > 1 /proc/sys/net/ipv4/ip_forward
永久变更配置可以这样:
v
更改net.ipv4.ip_forward=1参数
最后执行:sysctl -p
现在可以从开发机和运维机上测试ping baidu.com。如果能够通说明可以上外网了。有时,配置正确网络还是不通那么就把所有虚拟机重启后再测试。
笔记本如何访问虚拟机呢?又不在同一个网段。可以使用端口映射技术,将笔记本空闲端口映射到网关服务器的NAT网卡上。注意virtualbox只有NAT网卡可映射端口!
对应关系:127.0.0.1 5000-> 10.0.3.15 22
然后从网关服务器通过ssh 跳转到开发服务器和运维服务器。
三、业务搭建
在网关服务器上安装lrzsz软件包后可以直接将所需软件包拖动到xshell中,直接上传到服务器上。
yum install -y lrzsz
业务软件包:
apache-maven-3.6.3.tar.gz
jdk-8u151-linux-x64.tar.gz
tomcat8-cgi.tar.gz
virstu-demo.tar.gz (由maven构建的源码包)
我这里统一上传到/opt目录下。
依次解压并配置系统环境
tar -xvf /opt/jdk-8u151-linux-x64.tar.gz
tar -xvf /opt/apache-maven-3.6.3.tar.gz
tar -xvf /opt/tomcat8-cgi.tar.gz
tar -xvf /opt/virstu-demo.tar.gz
配置系统环境
vi /etc/profile
最后一行加入
export JAVA_HOME=/opt/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.6.3/bin
应用:
source /etc/profile
分别输入java 和 mvn有输出结果证明环境配置成功。
进入virstu-demo.tar.gz 解压目录,将源码构建成可执行文件war包,并拷贝到tomcat的webapps目录下。
cd /opt/virstu
mvn package ###这步需要联网,下载依赖时间较长。。。
cd tomcat8
cp /opt/virstu/target/virstu.war ROOT.war
启动tomcat服务,并查看服务是否启动。
/opt/tomcat8/bin/startup.sh
[root@jx-dev-71 ~]# ps -ef | grep tomcat | grep -v grep
root 1387 1 0 18:15 ? 00:00:23 /opt/jdk1.8.0_151/bin/java -Djava.util.logging.config.file=/opt/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.rmi.server.hostname=192.168.1.35 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Djava.endorsed.dirs=/opt/tomcat8/endorsed -classpath /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat8 -Dcatalina.home=/opt/tomcat8 -Djava.io.tmpdir=/opt/tomcat8/temp org.apache.catalina.startup.Bootstrap start
使用mvn源码构建的virstu.war监听80,有2个路径可供访问:静态资源路径:/a.html,动态资源路径:/cgi-bin/a.sh。
可以查看80端口是否有监听,并测试资源路径是否能访问。
[root@jx-dev-71 ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1387 root 53u IPv6 24058 0t0 TCP *:http (LISTEN)
[root@jx-dev-71 ~]# curl localhost/a.html
<p>ffffffffff</p>
访问动态资源时发现无法访问,查看tomcat日志信息报错。
起因:
[root@jx-dev-71 opt]# curl localhost/cgi-bin/a.sh
{"timestamp":"2024-12-06T08:51:22.839+00:00","status":500,"error":"Internal Server Error","message":"","path":"/cgi-bin/a.sh"}
日志:
vim /opt/tomcat8/logs/catalina.out
:set nowrap
报错信息:
java.io.IOException: Cannot run program "perl" (in directory "/opt/tomcat8/webapps/ROOT/WEB-INF/cgi"): error=2, No such file or directory
原因系统没有安装perl软件。
安装后测试解析正常:
# yum install -y perl
# curl localhost/cgi-bin/a.sh
aaaaaaaaaaaaaaa
现在想通过笔记本浏览器方式访问资源。
访问流程:笔记本->127.0.0.1 7180 -> 10.0.3.15 7180 -> 10.10.10.71 80
和之前一样现在需要在网关服务器上写一条DNAT指向业务服务器80端口。
iptables -t nat -A PREROUTING -d 10.0.3.15/32 -p tcp -m tcp --dport 7180 -j DNAT --to-destination 10.10.10.71:80
这条规则的含义是:所有访问网关服务器nat网卡10.0.3.15 的7180 端口的流量都转给10.10.10.71 的80端口.
现在还需要在virtualbox上网关服务器nat网卡配置上添加端口转发规则:
设置-》网络-》nat网卡-》高级-》端口转发
主机ip:127.0.0.1 主机端口:7180 子系统端口:7180
配置完成后可以在浏览器中测试:
http://127.0.0.1:7180/a.html
http://127.0.0.1:7180/cgi-bin/a.sh
评论区