一.Tomcat应用部署
1.web01部署zrlog博客
``bash
1.安装JDK
[root@web01 ~]# ll jdk-8u181-linux-x64.rpm
-rw-r--r-- 1 root root 170023183 Aug 20 09:31 jdk-8u181-linux-x64.rpm
安装
[root@web01 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
warning: jdk-8u181-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_181-fcs ################################# [100%]
2.下载Tomcat
[root@web01 ~]# cd /soft/
[root@web01 soft]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.98.tar.gz
[root@web01 soft]# ll
total 12464
drwxr-xr-x 9 root root 220 Dec 23 08:40 apache-tomcat-9.0.98
[root@web01 soft]# ln -s apache-tomcat-9.0.98 tomcat
3.修改配置文件
[root@web01 conf]# vim server.xml
...
<Host name="diy.tomcat.com" appBase="/code/tomcat"
unpackWARs="true" autoDeploy="true">
<Context docBase="/code/tt" path="/tt" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="diy_tomcat" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!--zrlog的server配置-->
<Host name="www.zr.com" appBase="/code/zrlog"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="zrlog_access" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
...
4.启动tomcat
[root@web01 conf]# systemctl start tomcat
5.下载zrlog
[root@web01 zrlog]# ll
total 10980
-rw-r--r-- 1 root root 11243048 Aug 19 20:58 zrlog-2.2.1-efbe9f9-release.war
6.修改名称为ROOT
[root@web01 zrlog]# mv zrlog-2.2.1-efbe9f9-release ROOT
[root@web01 zrlog]# ll
total 10980
drwxr-x--- 9 root root 126 Dec 23 08:46 ROOT
# 删除无用的包
[root@web01 zrlog]# rm -rf zrlog-2.2.1-efbe9f9-release*
重启Tomcat
[root@web01 zrlog]# systemctl restart tomcat
7.windows访问tomcat
hosts解析
10.0.0.7 www.zr.com
```

```bash
需要创建zrlog库
[root@db01 ~]# mysql -uroot -plzy123.com -e "create database zrlog";
[root@db01 ~]# mysql -uroot -plzy123.com -e "show databases";
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wordpress |
| zh |
| zrlog |
+--------------------+
```
问题解决思路
1. 配置文件里面有一堆问题.
2. 站点目录没有
3. jdk不在你配置的目录里面 rpm或yum安装的不用配置路径,二进制的才用.
4. 日志是/soft/tomcat/logs/catalina.out这个文件.
2.web02部署zrlog博客
```bash
1.安装jdk
[root@web02 ~]# ll jdk-8u181-linux-x64.rpm
-rw-r--r-- 1 root root 170023183 Aug 20 09:31 jdk-8u181-linux-x64.rpm
[root@web02 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
2.安装tomcat、配置server
[root@web02 ~]# scp -r 10.0.0.7:/soft /
3.配置systemctl启动方式
cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
ExecRetart=/soft/tomcat/bin/shutdown.sh && sleep2 && /soft/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
EOF
# 重新加载systemctl
[root@web02 ~]# systemctl daemon-reload
4.下载zrlog 同步web01的代码
[root@web02 ~]# scp -r 10.0.0.7:/code/zrlog /code/
5.启动tomcat
[root@web02 logs]# systemctl restart tomcat
6.windows访问测试
10.0.0.8 www.zr.com
```
3.ZRLOG接入负载均衡
```bash
[root@lb01 conf.d]# cat zr.conf
upstream zr {
server 172.16.1.7:8080;
server 172.16.1.8:8080;
keepalive 16;
}
server {
listen 443 ssl;
server_name www.zr.com;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
location / {
proxy_pass http://zr;
include proxy_params;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
}
}
server {
listen 80;
server_name www.zr.com;
return 302 https://$server_name$request_uri;
}
[root@lb01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 conf.d]# systemctl restart nginx
hosts解析
10.0.0.5 www.zr.com
```
4.zrlog接入NFS共享
```bash
1.web01上传图片
#图片的位置
[root@web01 zrlog]# ll ROOT/attached/image/20241223/20241223094001_428.jpeg
-rw-r----- 1 root root 52606 Dec 23 09:40 ROOT/attached/image/20241223/20241223094001_428.jpeg
2.web02访问测试
裂图
3.NFS配置共享zrlog的静态文件目录
[root@nfs ~]# cat /etc/exports
/data/wp 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# grep 666 /etc/passwd
www:x:666:666::/home/www:/sbin/nologin
[root@nfs ~]# chown www.www /data/zrlog/
[root@nfs ~]# ll -d /data/zrlog/
drwxr-xr-x 2 www www 6 Dec 23 09:48 /data/zrlog/
#重启生效
[root@nfs ~]# systemctl restart nfs
4.将图片推送至NFS共享目录 推送image目录到31
[root@web01 zrlog]# scp -r ROOT/attached/image 10.0.0.31:/data/zrlog/
#在NFS服务端递归授权目录权限
[root@nfs ~]# chown -R www.www /data/zrlog/
5.挂载31的/data/zrlog 到 attached
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 459M 0 459M 0% /dev
tmpfs 475M 0 475M 0% /dev/shm
tmpfs 475M 49M 426M 11% /run
tmpfs 475M 0 475M 0% /sys/fs/cgroup
/dev/sda3 48G 5.0G 43G 11% /
/dev/sda1 195M 122M 74M 63% /boot
tmpfs 95M 0 95M 0% /run/user/0
172.16.1.31:/data/zrlog 48G 3.9G 44G 9% /code/zrlog/ROOT/attached
web02挂载NFS
[root@web02 ROOT]# mkdir /code/zrlog/ROOT/attached
[root@web02 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached
[root@web02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 459M 0 459M 0% /dev
tmpfs 475M 0 475M 0% /dev/shm
tmpfs 475M 49M 426M 11% /run
tmpfs 475M 0 475M 0% /sys/fs/cgroup
/dev/sda3 48G 4.7G 44G 10% /
tmpfs 475M 32K 475M 1% /tmp
/dev/sda1 195M 122M 74M 63% /boot
tmpfs 95M 0 95M 0% /run/user/0
172.16.1.31:/data/zrlog 48G 3.9G 44G 9% /code/zrlog/ROOT/attached
```
5.tomcat的会话保持
1.官网的推荐的不使用,如果使用则不能超过4个节点
2.使用第三方插件实现tomcat将会话写入到redis
6.tomcat配置获取session页面
```bash
1.配置虚拟主机
[root@web01 conf]# vim server.xml
..
</Host>
<Host name="session.oldboy.com" appBase="/code/session"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="session_tomcat" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.zr.com" appBase="/code/zrlog"
...
2.准备代码或者当前web01的session
[root@web01 conf]# systemctl restart tomcat
[root@web01 conf]# mkdir /code/session/ROOT
[root@web01 conf]# vim /code/session/ROOT/index.jsp
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getCreationTime());
out.println("<br> web01 SESSION ID:" + session.getId() + "<br>");
out.println("Session created time is :" + session.getCreationTime()
+ "<br>");
%>
</body>
3.访问session
10.0.0.7 session.oldboy.com
7.面试题总结
1.上传redis插件
[root@web01 ~]# ll
total 900
-rw-r--r-- 1 root root 921429 Dec 23 11:13 tomcat-cluster-redis-session-manager.zip
2.解压插件
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip
3.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/
4.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/
5.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379
6.添加如下两行至tomcat/conf/context.xml (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
注意: 修改完一台直接和另外一台进行无差异同步rsync --delete
[root@web01 ~]# rsync -avz --delete /soft/tomcat/ 10.0.0.8:/soft/tomcat
修改完成后重启Tomcat
```
kill -9 和kill -15的区别
kill -9 和 kill -15 的主要区别在于它们发送的信号类型、进程响应方式以及资源清理效果不同。
-
信号类型和进程响应方式:
- kill -15:发送的是 SIGTERM(信号编号为15)信号。这是一种可捕获的信号,进程可以响应这个信号,进行一些清理工作后再退出。进程可以选择立即停止、释放资源后停止,或者忽略该信号继续执行12。
- kill -9:发送的是 SIGKILL(信号编号为9)信号。这是一种不可捕获的信号,进程无法响应,系统会立即强制结束该进程12。
-
资源清理效果:
- kill -15:由于进程有机会响应 SIGTERM 信号并进行清理工作,通常可以在结束前释放资源,减少资源泄露的风险12。
- kill -9:由于进程被强制结束,可能无法进行任何清理工作,容易导致资源泄露12。
-
使用场景:
- kill -15:适用于需要优雅关闭的服务或进程,允许其在结束前进行必要的清理工作,适合生产环境中的使用,以保护数据完整性3。
- kill -9:适用于紧急情况或无法正常关闭的进程,强制结束以避免更严重的问题,但通常不推荐在生产环境中使用,因为可能导致数据丢失12。
查找文件后缀是Log的三天前的文件删除和三天内没修改过的文件
1. 删除三天前的日志文件(以.log结尾)
要删除三天前的.log
文件,你可以使用find
命令结合-mtime
选项。-mtime
选项允许你指定文件内容最后一次被修改的时间,这里是三天前。
find /path/to/directory -type f -name "*.log" -mtime +2 -exec rm {} \;
这里:
-
/path/to/directory
是你要搜索的目录路径。 -
-type f
指明我们要查找的是文件。 -
-name "*.log"
指定文件名模式为以.log
结尾。 -
-mtime +2
表示文件最后一次被修改的时间是3天前(因为今天是当前时间,所以是+2天前的文件)。 -
-exec rm {} \;
对找到的每个文件执行rm
命令来删除它。
2. 删除三天内未修改过的文件
如果你想要删除三天内未被修改过的文件(不仅仅是.log
文件),你可以使用相同的find
命令,但是这次使用-mtime
的相反逻辑,即查找在三天前或更早被修改的文件。
find /path/to/directory -type f -mtime +2 -exec rm {} \;
这条命令同样适用于所有类型的文件,不仅仅是.log
文件。如果你想专门针对.log
文件来做这个操作,可以再次使用-name "*.log"
选项。
注意事项:
-
在运行删除命令之前,请确保你完全理解这条命令将会做什么,特别是在生产环境中。可以使用
-exec ls {} \;
代替-exec rm {} \;
来先列出将要被删除的文件,以确认是否正确。 -
对于重要数据,最好先进行备份,以防误删除重要文件。
-
使用
find
命令时,确保你有足够的权限去访问和删除目标文件。如果没有,你可能需要使用sudo
来提升权限。
例如,如果你想先列出所有三天前未修改过的.log
文件而不删除它们,你可以这样做:
find /path/to/directory -type f -name "*.log" -mtime +2 -exec ls -l {}
8.tomcat接入redis会话保持
```bash
# 10.0.0.51服务器运行
# 启动redis服务 保证远程可以访问到redis
1.上传redis插件
[root@web01 ~]# ll
total 900
-rw-r--r-- 1 root root 921429 Dec 23 11:13 tomcat-cluster-redis-session-manager.zip
2.解压插件
[root@web01 ~]# unzip tomcat-cluster-redis-session-manager.zip
3.拷贝jars到tomcat的/lib目录中
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/lib/* /soft/tomcat/lib/
4.拷贝conf下的redis.properties文件,到tomcat的conf文件
[root@web01 ~]# cp tomcat-cluster-redis-session-manager/conf/redis-data-cache.properties /soft/tomcat/conf/
5.将配置文件中连接redis地址修改为如下地址即可
[root@web01 ~]# vim /soft/tomcat/conf/redis-data-cache.properties
redis.hosts=172.16.1.51:6379
6.添加如下两行至tomcat/conf/context.xml (添加在</Context> 上一行 )
[root@web01 ~]# vim /soft/tomcat/conf/context.xml
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
注意: 修改完一台直接和另外一台进行无差异同步rsync --delete
[root@web01 ~]# rsync -avz --delete /soft/tomcat/ 10.0.0.8:/soft/tomcat
修改完成后重启Tomcat
二.ECS业务部署
1.阿里云介绍
1.云基本介绍
1.1) 什么是云?
云是一种”按需付费的模式“,这种模式提供了(计算、存储、网络等资源),这些资源能够被快速提供。
1.包年包月;
2.按需付费; SIM流量一样; 用多少给多少钱;
云只是一种思想,并不是某种具体的技术;
云需要依托于 虚拟化技术才可以实现;
1.2) 云的分类?
公有云(阿里云、腾讯云、亚马逊云)只有使用权,按需付费(技术层面:数据不安全)
熊猫TV --> 阿里云; 阿里云投资 --> 斗鱼;
熊猫TV --> 迁移云上的业务 --> 腾讯云;
私有云(自建机房,自己搭建,所有自行管理 (局限:资源固定))
将真实的物理服务器逻辑捆绑成一个虚拟资源池,用户可以根据虚拟资源池按需使用,资源是固定。
Openstack,Docker,Kubernetes, 私有云; vmware,ESXI5.4(集成了操作系统和虚拟化软件 课下扩展如何安装和使用ESXI) 在公司, 使用多台性能较高的物理主机, 逻辑组成一个庞大资源池;
根据业务需要,进行按需创建,使用对应的资源;
不对外开发,仅对本公司开放;
好处: 数据安全,
劣势:
1.自己维护,自己管理,成本高; 白夜休休模式
2.无法快速的扩展节点; 10台机器组成; 300-400台的;
那私有云跟传统机房有啥区别啊,都是自己弄物理设备
私有云: 多台机器逻辑捆绑在一起;组成的资源池; --> 系统平台;
传统机房: 物理机器托管在机房; 在物理机上运行资源; --> 3台 --> MySQL Mha
也就是都是这堆物理设备,但是对于它们的运用方式不一样
混合云(主要业务放私有云、当有临时需求的时候使用公有云,使用结束后释放)
按需使用、按需付费、保证业务稳定的同时,也能节省一定的成本。
两类场景:
1.公司正常的业务运行,资源不够, 借助公有云来快速,高效扩展业务;
2.重要的业务,核心的业务,在私托有云平台, 官网, OA, 等等 不是很敏感的信息,托管在公有云;
https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.zhiding.cn%2F5%2F902%2FlixpBLHIdcZIc_600.jpg%3Frand%3D155&refer=http%3A%2F%2Fimg.zhiding.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1625626132&t=052d86edae7c9ead828070ed1b8c917f
1.3) 为什么要用云?
1)海量资源池灵活调配 [像大海一样|无尽头]
2)无处不在的网络访问 [随时随地能访问云资源]
3)随需应变的自助服务 [包年包月-电话卡|按需付费-流量包]
4)保证服务的高可用性
5)能实现快速弹性伸缩 [扩展|伸缩|自愈]
2.购买ECS服务器
扩展: 多加一个web节点;
伸缩: 减少一个web节点;
自愈: 一个节点出现问题 自动调用接口创建相同配置的服务器节点
1.4) 云有哪些厂商?
1) 阿里云 | 腾讯云 | Ucloud | 青云 | [ AWS ]
2) 华为云 | 京东云 | 滴滴云 |
1.5) 云上面的产品名词
1)物理服务器 --> 阿里云
2)服务器 --> ECS、快照、镜像,克隆;
3)负载均衡 --> SLB
4) 数据库 --> RDS
5) 存储服务 --> NAS、OSS
5) 防火墙 --> 安全组iptables,firewalld、高防IP、WAF
6)远程访问 --> VPN | JumpServer + OpenVPN
7) 消息队列 --> MQ
8) 网络 --> 弹性网卡 NAT
..........................
3.ECS服务器云盘
1.6) 使用阿里云完成本次课程目标?--> 企业架构
https://www.processon.com/diagraming/5e4bc880e4b0d86ec4089270
2.ECS产品使用
云服务器(Elastic Compute Service,简称 ECS),是一种简单高效、可弹性伸缩的计算服务。
比如: 当服务器运行负荷不够时,通常的做法是增加服务器,那么增加服务器的流程和步骤如下:
1.购买硬件,拆开服务器、安装硬件设备。
2.部署系统、部署应用、接入集群。
但如果使用云主机,可以实现自动化感知、自动化扩展集群。
2.0) ECS云服务逻辑架构
https://help.aliyun.com/document_detail/25367.html?spm=a2c4g.11186623.6.553.32895c4ad25YGi
2.1) ECS地域与可用区说明
https://help.aliyun.com/document_detail/188196.html?spm=a2c4g.11186623.6.556.3e5e53c0ZQ8lpP
地域: 指的是一个城市;
可用区: 指的是城市下面的区;
1.相同地域,不同可用区之间的内网是互通的;
2.不同地域,相同可用区,内网不互通; 但是我们可以通过技术手段来实现互联互通;
3.每一个地域,都有一个VPC路由器; 每一个可用区都需要有一个交换机; 所有的交换机都是连接的同一个VPC路由器;
2.2)ECS云主机配置选型
web节点: 4c x 16Gb
DB节点: 4c x 64Gb 4c x 32Gb 12c x 128GB 建议使用:SSD 性能会受到磁盘的限制;
数据迁移 将物理机的服务 --> 云主机
故障案例:
4c x 64GB 物理机 磁盘 SATA = 400Mbps
4c x 64GB 云主机 磁盘 高效盘 100Mbps | SSD 固态盘 = 400Mbps
dd | hdparm -t /dev/vda1
2.3)ECS中的网络简要说明
EIP: 弹性公网IP
SLB: 负载均衡
NAT: 网关设备
VPN: 远程访问服务
VPC: 软件路由器 ( 可以创建交换机, 可以在每个可用区都创建 )
VPC文档:https://help.aliyun.com/document_detail/54095.html?spm=5176.11182174.content.1.4411488295LcKx#title-oil-ncn-266
2.4)ECS云主机购买|费用选择|地域选择|实例选择|镜像选择| 账户中最少100元
2.5)ECS系统设置|VPC网络|安全组|
2.6)ECS远程连接(控制台|Xshell|重置密码)
2.7) ECS其他操作(添加数据盘|扩容磁盘)
云盘--->创建50G云盘---> 挂载到WEB01
物理机: 插入磁盘(物理机支持热插拔) 分区 格式化 挂载
vmware:插入磁盘 重启 分区 格式化挂载
云服务器:
格式化:
[root@web01 ~]# mkfs.xfs /dev/vdb
meta-data=/dev/vdb isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载:
[root@web01 ~]# mount /dev/vdb /mnt
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 461M 0 461M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 464K 471M 1% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/vda1 40G 2.3G 36G 6% /
tmpfs 95M 0 95M 0% /run/user/0
/dev/vdb 50G 33M 50G 1% /mnt
在线扩容:
云盘--> 选择50G的数据盘 在线扩容到100G
执行命令扩容文件系统
[root@web01 ~]# xfs_growfs /mnt
2.8) ECS搭建kodcloud
2.8.1
安装Nginx
配置Nginx
server {
listen 80;
server_name test.linuxnc.com;
location / {
root /code;
index index.php index.html;
}
location ~ \.php$ {
root /code;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
启动Nginx
PHP-FPM 安装
加入开机自启动
下载可道云
wget https://static.kodcloud.com/update/download/kodbox.1.30.zip
解压到代码目录进行安装
Document: https://help.aliyun.com/product/25365.html?spm=a2c4g.11186623.6.540.4db0505cbq8EHp
4.web01部署KOB网盘
3.ECS快照
3.1)快照基本介绍
3.2)快照使用场景
3.3)快照使用方式
手动创建快照
自动创建快照
Document:https://help.aliyun.com/document_detail/25391.html?spm=a2c4g.11186623.6.823.73175b2cIbssVu
测试: 将web01的代码删除
通过页面无法访问
通过快照恢复再次访问
4.ECS镜像
4.1)镜像基本介绍和使用
4.2)镜像的生命周期
4.3)基于快照创建镜像 克隆--> (基于快照-->镜像-->启动实例)
4.4)基于镜像启动实例(和此前的应用节点环境一致)
4.3)镜像复制、镜像共享、镜像删除
Document:https://help.aliyun.com/document_detail/25389.html?spm=a2c4g.11186623.6.737.68f9116diWlmEv
5.SLB负载均衡
5.1)SLB是什么
5.2)SLB负载均衡高可用
5.3)SLB负载均衡应用场景 [http场景|https场景|tcp场景]
5.4)SLB基于域名/URL路径进行转发(aliyun.example.com)
1.将/user的请求调度到 web01 8080端口
2.将/pass的请求调度到 web02 8080端口
3.如果直接访问该域名,则返回一个默认站点(ecs01 ecs02 kodcloud)
5.5) SLB基于不同的域名转发到不同的虚拟服务器组 aliyun.example.com slb.example.com
1.配置后端服务器ecs01、ecs02的Nginx
2.配置slb虚拟资源池,test1资源池(8888) test2资源池(9999)
3.配置dns的解析,将域名都解析至slb负载均衡的公网IP上
4.配置slb转发规则,根据域名调度到不同的服务资源池
5.通过镜像运行ECS服务器
5.6)作业:
1.阿里云多可用区的高可用解决方案[无法模拟效果-->只有可用区故障才切]
2.使用两个真实域名 a域名调度到两台服务器 b域名调度两台服务器 如果直接访问slb的公网IP则跳转到a域名
Document: https://help.aliyun.com/document_detail/27539.html?spm=a2c4g.11186623.6.544.3ad85339qTtOwW
11.HTTPS
11.1) 如何购买HTTPS
11.2) 企业购买HTTPS建议说明
11.3) 实战:配置SLB支持HTTPS
11.4) 实战:配置CDN支持HTTPS
Document:https://help.aliyun.com/product/28533.html?spm=a2c4g.750001.list.180.70497b13IJcDtu
6.Redis集群介绍
6.RDS数据库服务-Redis
6.1)RDS-Redis架构
6.2)RDS-Redis实例创建
1.获取redis集群内网地址
2.配置redis集群用户名和密码 123@qqcom
3.配置谁可以访问redis,设置白名单
4.在web01或者web02测试命令行是否正常连接
yum -y install redis
连接方式redis-cli -h oldboy.redis.rds.aliyuncs.com -a 'oldboy:123@qqcom'
6.3)对接KODE业务 需要RDS实例设置设置免密访问
6.4)RDS实例设置外网连接IP (使用密码的方式连接,免密会报错)
6.5)RDS实例设置直连模式
6.6)RDS实例备份与恢复(集群RDB 标准版可以是AOF)
6.7) 实战:实现kodcloud缓存(注意:redis密码不要特殊字符开头)
Document: https://help.aliyun.com/product/26340.html?spm=a2c4g.11174283.6.34.690852feQTaE4k
作业:
1.购买标准版-双副本(社区版)Redis实例,测试内网连接
2.配置免秘设置 KOD对接Redis
3.配置公网连接 在虚拟机的WEB01可以连接Redis集群
在企业中配置redis的方式:
第一种: 管理页面有自带的接口配置redis
第二种: 管理页面没有需要我们找到对应数据库配置文件将信息填写进去
7.RDS数据库服务-mysql
7.1)RDS-MySQL架构 主从
7.1) 购买RDS数据库
7.2) 配置白名单(允许谁能连接),获取RDS内网数据库地址
7.3) 创建用户,点击账号管理,创建用户,等待1分钟。
7.4) 通过ecs云主机的内网连接RDB数据库
KOD将动态数据写入MySQL集群
KOD-->后台管理-->服务器管理-->数据库切换
7.5) 如何配置RDB能通过外网连接
1.设置白名单,才会显示内网RDS可连接地址 rm-2zea2795fzoaqwqlj35890.mysql.rds.aliyuncs.com
2.配置用户名和密码 (oldboy:123@qqcom)
3.配置外网地址(公司的固定IP|0.0.0.0/0)
7.6) 配置RDB读写分离
1.添加只读实例,购买2台主机
2.数据库代理->开启代理服务->开启读写分离(自动显示架构图)
3.让程序直接连接该地址,自动实现了读写分离
7.7) 配置RDB的备份策略, 备份恢复中点击->备份设置,根据实际情况做调整。
7.8) 实践:搭建wordpress、共享数据至RDS
Document: https://help.aliyun.com/document_detail/96047.html?spm=a2c4g.11174283.6.603.72514c22mb10IC
13.ESS
13.1) 什么是弹性伸缩?
使用弹性伸缩(Auto Scaling),您可以根据业务需求和策略设置伸缩规则,在业务需求增长时自动为您增加ECS实例以保证计算能力,在业务需求下降时自动减少ECS实例以节约成本。弹性伸缩不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。
13.2) 弹性伸缩应用场景
某视频公司:春晚或每周五热门节目来临时,负载激增,需及时、自动扩展云计算资源。
某视频直播公司:业务负载变化难以预测,需要阿里云自动根据CPU利用率、应用负载、带宽利用率作为衡量指标进行弹性伸缩。
某游戏公司:每天中午12点及晚上6点到9点间需求增长,需要定时扩容。
某电商:在大促中,临时激增大量云服务器需求,需要在数分钟内实现从创建到可用。
13.3) 弹性伸缩模式
定时模式:您自定义自动伸缩发生的时间和频率,如每天 13:00增加 ECS 实例。
动态模式:基于云监控性能指标(如 CPU 利用率),自动增加或减少 ECS 实例。
健康模式:如 ECS 实例为非 Running 状态,弹性伸缩将自动移出或释放不健康的 ECS 实例。
13.4) ESS弹性伸缩配置实践
配置的流程: 配置好负载均衡-->创建伸缩组-->添加伸缩配置-->添加已有ECS实例-->启用伸缩组
1) 创建伸缩组规则
1.1) 添加ECS实例规则 CPU大于80%
1.2) 减少ECS实例规则 CPU小于30%
2) 弹性伸缩规则会在什么时候添加或减少,根据动作来触发.
定时任务
云上监控
3) 模拟CPU大于百分之80%
Document:https://help.aliyun.com/product/25855.html?spm=a2c4g.11186623.6.540.535448595bgK6Y
14.NAT(运维)
14.1) 内网ECS没有购买公网IP,无法上网
方式一、firewalld实现内部主机共享上网(不推荐)
1.购买一台ECS专门用于共享上网,需要有独立公网IP,主机名称为Manager
2.开启Manager服务器firewalld防火墙,打开masquerade路由转发功能
3.找到需要上网的ECS实例所在的VPC网络,添加一条路由规则,去往0.0.0.0/0 下一跳是Manager 这台ECS实例
方式二、NAT网关实现内网共享上网 (强烈推荐)
1.购买按量付费的NAT网关
2.购买弹性EIP,将EIP捆绑置NAT网关
3.配置NAT网关的SNAT路由条目,进行地址转换,最后测试连通性
注意: NAT网关设备允许多个可用区共用一个NAT网关设备进行上网
Document:https://help.aliyun.com/product/44413.html?spm=a2c4g.11186623.6.540.47462f2aoaZFjK
14.2)解决内网主机无法直连的问题
方式一、跳板机方式
方式二、负载均衡TCP
方式三、NAT网关端口映射( 需要额外在购买一个弹性公网IP地址 )