AWS的CloudFormation和Elastic Beanstalk的简单测试

CloudFormation CloudFormation归类在Management & Governance下,它有很多模板可以直接使用,模板实际上是包含配置的文本文件,使用模板可以用很简单的操作可以创建,重复创建和设置很复杂的应用。 这里做一个简单的测试,点Create stack,取名: XiongStack,再使用Use a sample template,使用已有的模板,创建一个Wordpress blog,并进行各种设置。在这里可以看到模板的细节,也可以对模板进行编辑。 创建后可以在Events下看到进度。创建完成后,在Resource下查看网址:http://ec2-13-229-131-47.ap-southeast-1.compute.amazonaws.com/wordpress/,输入后有以下提示: ==Your server is running PHP version 5.3.29 but WordPress 5.3 requires at least 5.6.20.== 这个问题以前碰到过,需要升级PHP版本,参见使用AWS云安装WordPress + RDS MySQL方法进行解决,解决后以下网址可以正常访问: http://ec2-13-229-131-47.ap-southeast-1.compute.amazonaws.com/wordpress/ 测试完成后,删除这个Stack,那么这个Stack下所有的资源全部都被删除。 Elastic Beanstalk Elastic Beanstalk是在EC2界面里,它主要实现了容器的功能,使你不用担心底层的架构,例如负载均衡,扩展,运行健康检查等,使用者只需关注于应用层的创建和设置。 创建一个Elastic Beanstalk,进入Create a web app,取名为XiongElasticBeanstalk,使用PHP,并使用Sample Application,也就是样例应用,这里是简单起见。当然也可以上传代码(上传ZIP或者WAR),发布成功后,查看以下生成的 DNS网址,成功访问。 http://xiongelasticbeanstalk-env-1.pysmrc6iwc.ap-southeast-1.elasticbeanstalk.com/ 可以对样例程序进行下载,修改,再上传,进行发布,出现以下问题: ==Forbidden== ==You don't have permission to access this resource.== 查找原因,参见403 Forbidden error,原因如下: ==When zipping up the files Winzip has created a additional folder to contain all files.

AWS通过自动扩展实现高可用 – 创建一个高可用WordPress站点

创建两个S3 Bucket,分别存放Image和Code 创建两个S3,分别存放Image和Code,一个S3 Bucket命名为xiongwpmedia2019,存放图片,另一个S3 Bucket命名为xiongcode2019,用来存放Wordpress代码。 使用CloudFront来访问图片 在Networking & Content Delivery下的CloudFront,做以下设置, Origin Domain Name选择刚刚创建的S3 Bucket, 为xiongwpmedia2019.s3.amazonaws.com。 其它设置为默认。 创建一个Security Group,开放 ipv4 and ipv6的http, port 80, 和 ssh, 22 port,名字设置为Webdmz。 再创建一个 RDS使用的Security Group,取名为MyRDSSG, 允许 3306 port, TCP, Mysql/Aurora, 确保它开放给刚刚创建的 名为Webdmz的 Security Group.

AWS中使用负载均衡

进行实验,创建两个EC2, 每一个EC2在一个AZ (Availability Zone)里,再创建一个ELB,达到负载均衡的目的。 AWS负载均衡有三种: Application Load Balancer Network Load Balancer Classic Load Balancer,如果应用没有反应,那么ELB会返回504 这三种负载均衡有一些区别,首先,Application Load Balancers 和 Network Load Balancers需要使用Target Group,注册实例到Target Group,流量会用到Target Group, Classic Load Balancer需要直接注册实例到Load Balancers。 另外, Application Load Balancers的cross-zone load balancing设置是一直开启的,Network Load Balancer的cross-zone load balancing设置默认关闭,可以设置开启。Classic Load Balancer,如果使用API 或者 CLI创建,cross-zone load balancing设置默认关闭,如果使用界面进行创建,cross-zone load balancing设置默认开启。 创建两个EC2 创建两个EC2,分别在不同的AZ里,启动脚本分别是: 第一个EC2, #!/bin/bash yum update -y yum install httpd -y service httpd start chkconfig httpd on cd /var/www/html echo "<html><h1>这是我的第一个服务器</h1></html>" > index.html 第二个EC2, #!/bin/bash yum update -y yum install httpd -y service httpd start chkconfig httpd on cd /var/www/html echo "<html><h1>这是我的第二个服务器</h1></html>" > index.html 创建一个Classic Load Balancer 在EC2界面里的Load Balancer里创建Classic Load Balancer,注意到里面是灰色的,显示PREVIOUS GENERATION for HTTP, HTTPS, and TCP,估计是以后要废弃了。取名:XiongTestLB,默认先前创建的安全组:MyWebDMZ。添加前面创建的两个实例,另外设置安全检查,检查点为/index.html。 Step 4: Configure Health Check Cancel Previous Next: Add EC2 Instances Your load balancer will automatically perform health checks on your EC2 instances and only route traffic to instances that pass the health check.

在AWS中创建定制的虚拟私有云(VPC)

创建定制VPC AWS里一般默认有一个VPC,如果直接使用的话,可以省去很多麻烦。如果创建定制VPC,所有的组件需要各个创建,可以了解各个组件的细节。如果创建定制的VPC,会新创建一个默认的Route Table,Network ACL,和Security Group。不会创建Subnet和Internet Gateway。 创建一个定制的VPC并取名为XiongTestVPC, IPv4 CIDR block为10.0.0.0/16,如下图所示: 这里默认创建了Network ACL是允许所有的流量进出, 也就是所有的Source和Destination都是0.0.0.0/0允许。 以下未知,是否要设置DNS resolution和DNS hostnames为Enabled? DNS resolution Enabled DNS hostnames Enabled 在VPC里创建两个Subnet 首先创建公用Subnet,名字为XiongPublicSubnet,VPC选择新定制的VPC-->XiongTestVPC,IPv4 CIDR block为10.0.1.0/24,这里Availability Zone选择ap-southeast-1a。 ==注意==: 这里选择了ap-southeast-1a,如果在另一个帐户里也选择了ap-southeast-1a,这两个Availability Zone并不一定是同一个,因为AWS会随机分配,这样可以保证不会有大多数用户选择同一个Availability Zone。创建公用Subnet如下图所示: 对于公有的Subnet,改变设置公有的Subnet的自动分配公有地址,在Action --> Modify auto-assign IP settings里,如下图所示: 同理,创建另一个私有的Subnet,名字为XiongPrivateSubnet,VPC选择新定制的VPC-->XiongTestVPC,IPv4 CIDR block为10.0.2.0/24,这里Availability Zone选择ap-southeast-1b。 这里创建的两个Subnet, 默认Route Table里只能访问本地,需要在后面关联能够访问外网的Route Table,Network ACL默认为前面新创建的VPC所默认生成的Network ACL。 创建Internet Gateway 创建一个名为XiongTestInternetGateway的Internet Gateway,并把它附加到新创建的定制VPC上。如下图所示: ==注意==:一个VPC只能附加一个Internet gateway。 创建额外的Route table访问外部 创建额外的Route table 在创建定制VPC的时候,会默认创建一个Route table为主Route Table,这个默认创建的Route Table只能访问本地,是私有的(private),不能访问外部,这个Route Table专门用于内部私有的Subnet。那么这里我们创建一个额外的Route table可以访问外部,取名为XiongRouteTablePublic,用于外部的公有的Subnet。如下图所示: 添加路由到Internet Gateway 在XiongRouteTablePublic这个公有的Route Table里添加两个(分别是IPV4和IPV6)指向前面新创建的可以访问外部的Internet Gateway, 也就是XiongTestInternetGateway,0.0.0.0/0为IPV4, ::/0为IPV6,如下图所示: 关联公有Subnet到额外的公有的Route table 关联公有Subnet也就是XiongPublicSubnet到额外的Route table也就是XiongRouteTablePublic,在Subnets > Edit route table association界面中,这样公有Subnet就可以访问外部公网我了。添加的地方如下图所示: 在定制VPC里创建一个新的Security Group (安全组) 在定制VPC XiongTestVPC 里创建一个新的Security Group (安全组),取名为XiongInternalSecurityGroup,用途为内部的EC2使用,默认的Inbound Rules为空,Outbound Rules为所有。 所以在Inbound Rules中添加内网的Subnet地址可以访问以下端口。 ICMP --> 0~65536 HTTP --> 80 HTTPS --> 443 MYSQL/Aurora --> 3306 SSH --> 22 如下图所示: ==注意==:Security Groups不能跨VPC。一个VPC里只能有一个Internet Gateway。 ==注意==:Security Groups是stateful,也就是说添加到Inbound的规则,也自动添加到Outbound上去。 在定制VPC里创建两个EC2 (公有和私有) 在定制VPC里创建两个EC2 (公有和私有),公有EC2可以访问外网,也可以被外网访问,例如Web Server,私有EC2只能内部才能访问,例如数据库服务器。 创建公有EC2 使用以下启动脚本: #!/bin/bash yum install httpd -y yum update -y service httpd start chkconfig httpd on echo "<html><h1>Hello Xiong, this is public EC2 Instance!</h1></html>" > /var/www/html/index.html 这里要选择, XiongTestVPC和XiongPublicSubnet,前面已经设置过XiongPublicSubnet会自动分配公网地址, 如下图所示: 创建私有EC2 再创建一个私有EC2,假如用作内部数据服务器,这里要选择, XiongTestVPC和XiongPrivateSubnet,前面已经设置过XiongPrivateSubnet 不会自动分配公网地址,

AWS Route53里使用Godady注册的域名

AWS的Route53是可以注册域名的,但是如果在外部注册的域名怎么在Route53里使用呢,这里使用外网的DNS服务的Godaddy注册域名,并在AWS的Route53里使用。 注册域名并下载Zonefile 在Godaddy里注册域名xionghuilin.club,并在管理域名里下载Zonefile, 自动下载并命名为xionghuilin.club.txt 在Route53里创建hosted zone 在Route53里创建hosted zone,会自动生成SOA和NS,如下: 在Godaddy中添加新生成的NS 以下四条NS需要添加到Godaddy中,xionghuilin.club的name server如下: ns-727.awsdns-26.net.