EAS云租赁模式实现文档

EAS云租赁模式实现文档


概述:EAS云租赁模式是将EAS运行在docker容器中,docker容器运行在AWS EC2中.


涉及AWS服务:EC2、VPC、RDS、S3、IAM


EAS环境部署准备工作:
做一个生产环境的AMI镜像,镜像需安装docker和amazon-ssm-agent.
sudo yum -y install docker 
Sudo yum -y install amazon-ssm-agent
并设置开机启动
AMI镜像中还要有各个版本的EAS安装目录的压缩包,我称之为EAS的镜像.
目前已有一个AMI镜像:ProductAppEC2_Image(ami-58558135),镜像中有两个EAS镜像:eas820.jar和eas820+shr.jar,安装目录都是eas820,挂载到容器中的目录也必须是该目录.


docker是用作运行EAS
amazon-ssm-agent是AWS提供的一个代理,是为了使用run Command服务.run Command服务用作远程控制EC2.我们在做快速部署的时候需要用调用API通过run command执行shell命令.


还需要做一个docker容器的镜像,这个镜像里面装了桌面环境,VNC服务,ssh服务.EAS控制台需要有桌面环境才能启动,运维人员也需要通过vnc服务和ssh服务连接到docker容器中.


目前已经准备好了一个centos6的docker镜像 centos6-eas-base


Docker相关命令:
docker images#显示镜像
docker ps -a#查看所有的容器
service docker start#启动docker
chkconfig docker on#设置docker开机自启动
docker build -t vnc-new:2 .#通过当前dockerfile文件生成docker镜像
docker commit vnc2 centos-vnc:1#将通过容器vnc2生成一个docker镜像centos-vnc:1
docker save -o centos-vnc_1.tar centos-vnc:1#将centos-vnc:1镜像保存为centos-vnc_1.tar文件
docker load -i centos-vnc_1.tar#加载镜像文件centos-vnc_1.tar为镜像


docker run -itd  -h test1 --name test1  --restart=always -p 6888:6888 -p 5901:5901 -p 8080:8080 -p 443:443 -p 11033:11033 -p 10060:10060 -p 10688:10688 -p 2222:22 --privileged=true -v /kingdee/test:/kingdee/eas820   centos6-eas-base  /bin/bash /kingdee/eas820/initContainer.sh
#该命令是目前执行生成docker容器的命令
#-h test1:主机名为test1
#--name test1:容器名为test1
#--restart=always:设置主机启动则启动该容器
#-p 6888:6888:将容器中的6888端口映射到主机6888端口,可映射多个端口
#-v /kingdee/test:/kingdee/eas820:将主机/kingdee/test目录挂载到容器/kingdee/eas820目录
#--privileged=true:设置挂载目录有权限操作
#centos6-eas-base:容器镜像
#bin/bash /kingdee/eas820/initContainer.sh:启动容器后执行的命令,initContainer.sh是一个初始化容器的shell脚本
initContainer.sh脚本内容为下:
#!/bin/bash
#add ip
ip addr add 10.8.2.3/32 dev eth0#给容器网卡eth0设置ip地址
echo "add ip success"
#启动vnc服务要清理临时文件
if [ -e "/tmp/.X1-lock" ]; then
 rm -rf /tmp/.X1-lock
fi
if [ -e "/tmp/.X11-unix" ]; then
 rm -rf /tmp/.X11-unix
Fi
#杀掉vnc服务
vncserver -kill :1
#启动vnc服务
vncserver :1
#启动ssh服务
service sshd start
#最后进入命令行
/bin/bash




准备网络环境,目前已经创建的网络环境如下:
Vpc: ProductVPC(vpc-3c738f58 )
子网:vpc下三个子网
PrivateSubnet_a1  用作a可用区的私有子网
PrivateSubnet_b1 用作b可用区的私有子网
PublicSubnet1 用作公有子网
我们将EAS部署在PrivateSubnet_a1私有子网下的EC2上
路由表:两个路由表
privateRoute1 挂载私有子网上
IGWRoute1 挂载公有子网上
Internet网关:用作访问Internet公网,igw1


安全组:目前安全组没有做任何限制,入站规则和出站规则都是所有流量


在私有子网下的EC2没有暴露在公网环境中,也不能访问公网
我们是用了一个在公有子网下的EC2跳板机来访问EAS环境:ProductWebEC2(i-088ab3566527be028),同事该EC2也是一个NAT实例,可以使私有子网下的EC2通过NAT实例访问到公网,这样也才能够使用run command远程控制EC2.同时我们也需要指定路由表privateRoute1的路由为这台NAT实例.
这台NAT实例还有一个作用,利用安装在上面的防火墙iptables端口转向的功能.转发vnc服务端口和ssh服务端口.


#将访问10.0.0.222 : 5905端口转发至10.0.100.11 : 5901
sudo iptables -t nat -A PREROUTING -d 10.0.0.222 -p tcp -m tcp --dport 5905 -j DNAT --to-destination 10.0.100.11:5901
sudo iptables -t nat -A POSTROUTING -d 10.0.100.11 -p tcp --dport 5901 -j MASQUERADE


sudo service iptables save#保存防火墙iptables设置
sudo service iptables start#启动防火墙
sudo service iptables status#查看防火墙设置


ssh root@ 10.0.100.11#在跳板机命令行使用密码方式登录到10.0.100.11的root用户下
如果不支持密码登录.只能通过证书登录
chmod 700 KingdeeEAS.pem#赋给证书权限
ssh -i "KingdeeEAS.pem" root@10.0.100.11#使用证书登录


NAT实例中还安装了fikker服务,fikker服务是用做http域名转发,
主页http://54.222.241.235:6780/fikker/default.htm


目前域名方面是这样的:  域名  *.horizonstar.ik3cloud.com都会解析到这台NAT实例的绑定的弹性IP : 54.222.241.235下.


客户直接访问:hr.horizonstar.ik3cloud.com:portal即可访问到10.0.100.142:8081下的EAS环境
目前已有四家客户的EAS环境都在EC2:ProductAppEC2_1上.必须指定IAM 角色为runCommandInstance-role,该角色已设置了运行run command名称的权限.






至于RDS数据库服务需要注意的是需要选择oracle se one,如此才能选择附带许可的模式,RDS的网络设置不能暴露在公网下,RDS设置的是子网组,我们需要先创建一个子网组.目前子网组为:dbsubnet ,子网组下添加了两个子网就是之前可用区a和b下的私有子网PrivateSubnet_a1和PrivateSubnet_b1 , 如此才能使私有子网下的EC2能够访问到RDS数据库服务也不会暴露在公网下.



































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值