Day4 Webserver
1.回顾
之前学习了Linux的基本操作和常用命令,包括权限的了解和修改,多了解记一下命令问题应该不是很大,最后学习了如何配置SSH密码登录,一般密钥对就够了,不是很推荐打开密码登录可以提高安全性。
2.目标
ALB(Application Load Balancer)基本的了解
Apache的基本了解(只能静态网站)
ロードバランサ(负载均衡)了解和使用
3.ALB
ALB简介
HTTP/HTTPS
Application Load Balancer は、HTTP トラフィック(流量)および HTTPS トラ
フィックの負荷分散に最適です。Application Load Balancer を使用すると、マ
イクロサービス(微服务)やコンテナ(容器)といった最新のアプリケーショ
ンアーキテクチャ(应用程序架构)を対象とした高度なリクエストルーティン
グ(高级请求路由功能)を実現できます。
在常用服务器上部署网站,如果我们同时架设在两台服务器上,其中一台挂掉,我们只能手动切换成另外一台服务器,如果通过ALB 可以达到负载均衡,帮我们自动切换可用服务器。中转和复合分散。
4.利用Apache来部署一个简单网页
Apache是什么?
Apache HttpdとWebサーバー ( Apache HTTP Server & web server / 阿帕奇服务器与网
站服务器 / アパッチ & ウェブサーバー)
Welcome! – The Apache HTTP Server Project
Webサーバー就是网站服务器。Apache是一个可以用来做静态网站的中间件。
听老师描述,貌似和我常用的nginx是类似的东西吧。Σ(‘◉⌓◉’)
实操步骤
1.使用bas-web1a的服务器
2.web1a: 下载安装apache
3.web1a网页的路径:
/var/www/html/index.html
4.启动命令
systemctl start httpd
systemctl enable httpd
误区
1.忘记下载安装
2.路径错误
3.忘记启动运行
4.html文件内容/格式修改错误
通过私网主机创建一个简单网页
1.创建一个NATゲートウィイ
为了使我们的私有网络主机能有网用,我们需要创建一个NATゲートウィイ来连接网络
1.进入VPC—NATゲートウィイ—-创建NATゲートウィイ
2.创建NATゲートウィイ的时候我们需要选择pub1a这个网,也就是公网。
注意⚠️:不要选择私有网络,不然还是没网。
3.然后我们需要关联路由表,点击ルートテーブル
4.选择我们的pri1a这个网,然后ルート編集ーールートを追加ーー追加刚刚创建的NATゲートウィイ
2.下载Apache并创建一个简单的网页
2.1下载Apache并编辑一个网页
回到web1a的服务器上就可以使用网络。
然后执行下面的操作
sodu yum install httpd -y #安装Apache
sodu vim /var/www/html/index.html #新建index文件编辑内容
粘贴下面内容
Page for PC
2.1查看Apache状态并运行
1.首先我们输入
systemctl status httpd #查看服务状态
发现没有运行
[root@web1a html]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
2.我们来启动他
systemctl start httpd #启动服务
#然后
systemctl enable httpd #自动启动
发现已经跑起来了
[root@web1a ec2-user]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-01-10 08:00:06 UTC; 37s ago
Docs: man:httpd.service(8)
Main PID: 5280 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─5280 /usr/sbin/httpd -DFOREGROUND
├─5281 /usr/sbin/httpd -DFOREGROUND
├─5282 /usr/sbin/httpd -DFOREGROUND
├─5283 /usr/sbin/httpd -DFOREGROUND
├─5284 /usr/sbin/httpd -DFOREGROUND
└─5285 /usr/sbin/httpd -DFOREGROUND
Jan 10 08:00:06 web1a systemd[1]: Starting The Apache HTTP Server...
Jan 10 08:00:06 web1a httpd[5280]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, usin... message
Jan 10 08:00:06 web1a systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
好了使用同样的方法我们可以再创建一个pri1c(web1c)的主机
3.ALB实践 创建一个目标组(ターゲットグループ)
创建一个目标组(ターゲットグループ)可以方便我们管理和查看实例。
- 选择EC2→ターゲットグループ→ターゲットグループ作成
- 基本的な設定中我们选择インスタンス(指向我们的实例)
- 起一个ターゲットグループ名(qlite-dev-xxx-tg)
- 选择自己的VPC
- 创建,这样我们就可以看到我们跑的实例。
- 选择web1a和web1c然后端口选择80后,点击保留中として以下を含める
- ターゲットを確認中可以看到保留中的两台实例
- 最后点击ターゲットグループを作成
4.创建一个ロードバランサー
-
选择EC2→ロードバランサー→ロードバランサー作成
-
选择第一个ALB
-
起一个名字(qlite-dev-xxx-alb)
-
选择インターネット向け和IPV4
-
Network mapping里选择我们的VPC
-
勾选我们的pub1a和pub1c(两个公网主机)⚠️记得不要选错
-
创建一个安全组,首先给安全组起个名(qlite-dev-xxx-sg-alb),VPC选择我们的VPC(⚠️点叉之后选择,不要默认选错了。如果选错了会不会显示)
インバンドルール(入站规则)开放http的80端口。
可以再开一个ipv6 最后创建。
-
回到刚刚的步骤,选择我们刚刚创建的安全组
-
リスナーとルーティング(指向什么地方/目标)选择我们刚刚创建的ターゲットグループ
-
选择作成
回顾一下到这里我么你做了一些什么
到这里我们给我们的两个公网主机上做了一个ALB负载均衡
上图中的Web Server 1a和Web Server 1c就是我们的ターゲットグループ(targetgroup/目标组)
5.查看我们刚刚做的简单网页
选择EC2→ロードバランサー→点击我们创建的ロードバランサー查看详情
可以看到DNS名,复制他到我们的浏览器可以看到我们输入的内容
刷新可以看到颜色会变,代表会在我们两台主机中来回切换,代表我们的负载均衡做好了。
思考????
到这里今天学习就貌似结束了。
AWS这些东西直接涉及到了我的知识盲区。
总结一下今天做了什么
- 在两台内网主机上部署了Apache然后创建了一个简单的网页。
- 为了使我们在内网主机上的服务能够在外网进行访问我们创建了ALB
- ALB是应用层负载均衡器,支持HTTP/HTTPS的协议,与Classic ELB不同的是,ALB支持基于请求路径的分发,即根据HTTP标头的请求URL路径的不同,分发给后端不同的目标组(Target Group)。
- 通过ALB我们可以把HTTP请求分发给web1a,web1c这两台主机。
- 为了配置好ALB我们先创建了目标组(ターゲットグループ),这给目标组就使方便告诉ALB我们需要分发的两台主机。
- 接着我们正式创建一个负载均衡–ALB
- 其中Network mapping就代表我们要把ALB部署到的位置,我们在上面选择了pub1a和pub1c(两个公网主机)即我们把ALB部署到了pub1a和pub1c的公共网络上。
- 安全组就不需要解释了,就是防火墙,根据需求来打开
- リスナーとルーティング(指向什么地方/目标)简单来说他就是接受请求的,相对Network mapping就是帮我们发送请求的。