aws服务器搭建节点
1. aws配置点到点vpn隧道
1、创建客户网关
如下图所示:注意IP地址是本地(北京vpn设备防火墙)的固定出口ip地址。
2、创建 虚拟私有网关
如下图所示: 选择需要连接本地的aws上的vpc网络。其他默认即可。
3、创建 站点到站点vpn连接
如下图所示: 创建vpn连接,配置选项可按照如下配置,或者按照( https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNTunnels.html)括号内连接地址配置。
4、此时我们需要配置路由表,需要连接vpn的子网的路由需要添加一条规则:
如下图所示:我们需要将本地ip地址段目标配置为:虚拟私有网关。
5、下一步空基是配置安全组,我们必须让本地ip地址段可以通过安全组访问我们的实例资源。
1、配置本地vpn设备,使用华为防火墙作为vpn网关设备。
vpn隧道选项我们和aws上配置选项保持一致即可。
2、下面还有重要的一步,就是配置本地的路由表。
我们在斗皮谨核心交换机上配置172.40.0.0/16网段的路由吓一跳设备为:华为防火墙。
3、此时,我们所有vpn配置都已完成。
ipsec诊断所有结果都是通过:
隧道详情显示IKE协商握春成功。
我们本地ping远程aws上的服务器实例:显示ping可达。
4、本地和aws已建立完整的内网vpn连接。
1、华为路由器AR6140H-S,配置点对点vpn使用命令行更合适。
参考华为文档: https://support.huawei.com/hedex/pages/EDOC1000163882DZG08147/14/EDOC1000163882DZG08147/14/resources/dc/dc_cfg_ipsec_0047.html?ft=0&fe=10&hib=7.1.10.6.12.4&id=dc_cfg_ipsec_0047&text=%25E9%2585%258D%25E7%25BD%25AE%25E6%2580%25BB%25E9%2583%25A8%25E9%2587%2587%25E7%2594%25A8%25E5%25AE%2589%25E5%2585%25A8%25E7%25AD%2596%25E7%2595%25A5%25E7%25BB%2584%25E6%2596%25B9%25E5%25BC%258F%25E4%25B8%258E%25E5%2588%2586%25E6%2594%25AF%25E5%25BB%25BA%25E7%25AB%258B%25E5%25A4%259A%25E6%259D%25A1IPSec%25E9%259A%25A7%25E9%2581%2593%25E7%25A4%25BA%25E4%25BE%258B&docid=EDOC1000163882
2. AWS服务建设之路-Docker集群
最近的项目处于种种原因要放到亚马逊上面,也正好体验一下世界最大云计算平台的服务。于是又开始了漫长的爬坑路。不得不说AWS的管理交互台设计充满了工业气息,新手很难上手,但熟练工会觉得很直观。
简单来说分4步:
ECR是私有镜像仓库,先把自己的镜像上传上来,这一步的坑就在于要上传镜像不能直接 docker login 需要
ECS有一个很重要的概念,任务定义。这个概念类似于 k8s 的 pod。任务定义抽象出了任务这个概念,一项任务可以包含多个docker镜像及对应的参数/环境配置,并且拥有CPU,内存限额。
任务定义拥有版本号,只能创建新版本不能修改以前版本。
而在集群中的调度则是以任务定义为对象。
所以我们为我们每一个服务创建了1个任务定义,一个任务定义包含1个镜像。
这里有3种网络模式供选择:
大部分情况我们都使用桥接模式,少部分情况使用 awsvpc 。主机模式则尽量不要使用,不利于编排。 awsvpc 的具体使用场景会在下文服务发现章节介绍。
动态端口映射 技术,是指将容器在宿主机上的外部端口随机映射,只在桥接模式下有效。
勾上日志配置,ECS就会自动把镜像的标准输出定向到 CloudWatch,就可以去那里查看镜像日志了,当然专业的日志系统还是得ELK。
ECS有2种集群,Fargate 与 EC2 linux。
Fargate是很酷炫的架构,特别是在资源占用量不稳定,时间不确定的情况下很合适。而且全部使用awsvpc网络模式,所有的服务都可以拥有独立IP,纯正的无服务器架构。只有一个缺点,贵(同样资源量是EC2的3倍价格...
建议创建空集群,再自行添加服务器,不然容易触发一些 keng
上面说了任务定义,那么任务这个概念也很简单,被运行的任务定义。
一个任务可能包含多个容器,这个任务可能是在有限时间内执行完毕就停止的,比如拦册蠢一次性脚本,也可能是无限运行的,比如nginx服务器。
服务这个概念比较复杂,一个服务会管理一个任务定义在运行时的方方面面
服务没有停止功能,只能修改任务数为0。
服务删除后,需要手动停止已经运行的任务。
AWS提供基于Router53(DNS服务)的服务发现,其实很难用,awsvpc模式的很方便,桥接模式下特难用。
在awsvpc模式中 ,因为每个任务都有自己的IP,所以端口可以直接固定,不会存在冲突,配合基于Router53的服务发现可以直接完成完美的服务发现--无论如何更新重启服务,总能通过固定域名访问到服务。但因为一台服务器只能绑定3张网卡,所以只能启动3个awsvpc模式容器。
在桥接模式中 ,每个任务都使用宿主机的ip,以及随机分配的端口,所以服务发现需要带上端口,不然也不能正常发现。AWS提供SRV类型的DNS记录用作服务发现,本身是没有问题,但SRV并不是被广泛接受的记录类型,浏览器与网络库均不能解析SRV记录,所以要访问服务还需要定制DNS解析。
所以我们最终选择使用Eureka作为服务发现简陪服务,使用awsvpc作为补充的服务发现服务,比如将Eureka本身及xxl-job等使用awsvpc部署。
在选用了Eureka之姿尺后,又遇到了问题。因为使用了动态端口映射,所以向Eureka注册的端口不是Spring的监听端口,并且容器内部无法知道宿主机的ip与端口。
这里通过多种方式配合破局:
不过要注意,启用元数据服务,需要修改ECS代理配置,而这个配置是在集群创建时就写入服务器的,所以要修改ECS代理配置,必须要先修改自动伸缩组的初始化脚本,再删除伸缩组内所有服务器,再重新添加服务器。
这样就可以在Eureka中心正确展示服务信息了。
3. aws 部署项目遇到的问题
1、ssh连接服务器连接不上
aws默认创建非root用户,并且使用密钥对登录,公钥存储在/home目录+用户名的隐藏.ssh文件下,因为公司项目有要求也是只能通过密钥对登录就没有修改账户密码登陆,登录后使用命令sudo -i 切换到root用户。因为挂载磁盘在/home目录下所以密钥对没有当断开连接或超时自动断开时就会再也连不上去了。所以可行的时挂载到/睁此mnt目录或者挂载/home前备份文件,挂载后cp到/home下。
这个问题弄得我好埋帆烦,我以为是更改端口的问题,后面没更改还是一样出错,而且aws还不允许初始化系统和还原快照好像。
创建root用户密钥对
其实这个也适合配置服务器间ssh免登录
2、修改默认端口
因为默认ssh端口不安全容易被黑客找到机会,要求更改默认端口,并且生产环境要求启用防火墙,想着测试环境各种关闭防火墙部署环境那叫一个爽,到了生产就叫苦了。更改默认端口后需要开启防火墙和selinux,云上还要开启安全组,记得开启防火墙端口后要重载,selinux也需要开放端口,ssh需要重启。
这里困扰了挺久的,我想到了防火墙和安全组,没注意selinux。
3、防火墙
服务器上部署etcd,服务连不上etcd,报错no route to host,结果还是防火墙问题,开放2379和2380端口,并且记得重载。
4、启动docker容器时报错
5、nginx安装失败悉液迅
6、etcd连接不上
7、ip ping不通
这个是安全组未开放icmp端口,开放所有ipv4就可以了。
8、asw S3设置公开访问权限
这个配置我是真的挺无语的,设置了好久解决不了,还是json来配置吧。老外的思维和我们还是挺大的哈。
8、购买服务器
购买服务器选择镜像一定选择官方镜像,注意安全。
9、购买RDS
AWS RDS可以设置只对内网开放或公网开放,通过终端节点连接,所以不要去傻傻的找公网IP和私有IP了。
连接方式终端节点+端口+主用户+主密码。
10、nginx问题
Nginx 500错误(Internal Server Error 内部服务器错误)
HTML 文档的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览器配置中呈现为乱码。页面的字符编码必须在文档或传输协议层声明。
原因是nginx配置以及权限问题。
还有几个是未解之谜,怪事年年有,aws特别多
文章仅给自己引以为戒,犯过的错误不要再犯,归根结底还是对AWS不熟悉。
国外除了AWS,还有 https://www.linode.com/ , https://www.vultr.com/ ,这几个都不错的。
4. 如何在亚马逊免费云主机amazon ec2安装lnmpa来搭建网站
登录亚马逊AWS管理控制台,通过邮箱进行注册或登录。进入后,选择EC2服务,点击“虚拟服务器在云端”开始启动实例。选择“启动实例”按钮,随后在镜像系统中选择适合的操作系统,比如Windows Server 2012,或者您也可以选择Linux等其他系统。配置服务器时,依次点击Next,直到配置服务器名,然后设置开放端口规则,下一步选择创建新的密钥对,并下载密钥对文件保存到本地。
服务器搭建完成后,启动实例并查看运行中的实例。通过右键点击刚创建的服务器,选择获取Windows密码,上传之前保存的密钥对文件。记住服务器的IP地址和密码,保存在记事本中,以便后续使用。使用远程连接工具连接到服务器,确保连接成功。
接下来,安装LNMPA环境。首先,登录服务器,安装Nginx,使用命令:sudo apt-get install nginx。然后,安装Mysql,使用命令:sudo apt-get install mysql-server。接着,安装php,使用命令:sudo apt-get install php5-fpm。最后,安装Apache,使用命令:sudo apt-get install apache2。
安装完成后,配置Nginx,编辑配置文件/etc/nginx/nginx.conf,确保Nginx能够正确访问PHP文件。接着,配置MySQL,创建数据库和用户,设置相应的权限。配置PHP,编辑php.ini文件,设置PHP的配置参数。最后,配置Apache,编辑httpd.conf文件,确保Apache能够正确处理PHP请求。
完成所有配置后,重启Nginx、MySQL、PHP和Apache服务,确保所有服务正常运行。使用浏览器访问服务器IP,测试网站是否正常运行。如有问题,检查配置文件,确保没有语法错误。如果一切正常,恭喜您成功在Amazon EC2上搭建了LNMPA环境。