Aliyun1.云服务器ECS概述特点优势2.安全组与vpc2.1 安全组2.2 vpc虚拟专有网络3.创建专有网络4.创建安全组5.创建ECS实例6.RDS6.1 创建RDS6.2 管理RDS6.3 登录数据库6.4 设置白名单6.5 链接测试6.6 数据迁移(补充)7.存储7.1 NAS使用7.2 ecs-rds-nas项目7.2 OSS对象存储7.2.1 创建Bucket7.2.2 应用连接OSS(AK)8.RAM访问控制8.1 创建用户组8.2 创建用户8.3 授权8.4 RAM登录9.负载均衡SLB9.1 传统型负载均衡CLB9.1.1 CLB环境准备9.1.2 创建CLB9.1.3 配置CLB9.1.4 调试9.2 应用型负载均衡ALB9.2.1 创建ALB9.2.2 创建服务器组9.2.3 创建监听9.2.4 编辑转发规则9.2.5 测试10 云解析DNS10.1 DNS记录类型10.2 配置DNS解析10.2.1 A记录10.2.2 CNAME记录10.2.3 TXT记录11 网站注册(补充)12 内容分发网络CDN12.1 配置CDN12.2 CDN预热与刷新13 安全14 DTS数据传输服务15 ESS弹性伸缩服务16 NAT17 高速通道CEN18 ACK18.1 配置18.1.1 master节点配置18.1.2 节点池配置18.1.3 组件配置18.1.4 确认配置18.1.5 可观测监控Prometheus18.2 配置master节点18.3 界面使用举例18.4 配置私有仓库18.5 控制器18.5.1 无状态控制器-镜像方式创建18.6 service18.6.1 LoadBalancer18.6.2 ClusterIP18.7 ingress19 ACR 容器镜像服务19.1 准备19.1.1 设置访问凭证19.1.2 创建命名空间19.1.3 创建仓库19.2 使用19.2.1 推送镜像19.2.2 ack专有网络部署20 Codeup21 云效22 https23 PolarDB-X(补充)23.1 相比RDS23.2 升配23.3 扩容24 MongoDB(补充)25 Redis云速搭 CADT(补充)
1
2echo '起飞'
云服务器(Elastic Compute Service,简称ECS),是一种简单高效、处理能力可弹性伸缩的计算服务。
ECS是阿里云产品体系中,最基础的计算服务。基于阿里云自主研发的大规模分布式计算系统,通过虚拟化技术整理IT资源,为各行业提供互联网基础设施服务设备。
应用程序的基础运行环境
每个ECS实例上都运行着用户选择的操作系统,一般是某个Linux或Windows的发行版,用户的应用程序运行在实例的操作系统之上。
最简化的弹性架构
较好的实践是将ESC和其他云计算产品配合使用,例如将使用ECS运行webserver,使用RDS作为数据库,OSS作为文件存储。
xxxxxxxxxx
11应避免完全将原有物理服务器上的应用都照搬跑到云服务器上。
支持纵向和横向扩展两种能力
纵向的弹性,即单个服务器的配置变更。传统IDC模式下,很难做到对单个服务器进行变更配置。而对于阿里云,当您购买了云服务器或者存储的容量后,可以根据业务量的增长或者减少自由变更自己的配置。
横向的弹性,对于游戏应用或直播平台出现的高峰期,若在传统的IDC模式下,您根本无法立即准备资源;而云计算却可以用弹性的方式帮助客户度过这样的高峰。当业务高峰消失时,您可以将多余的资源释放掉,以减少业务成本的开支。(自动增加服务器实例数量,活动结束后再自动减少实例数量,按实际用量计费)
安全组(SG Secure Group):虚拟的防火墙,一般用于屏蔽或开启端口和ip地址
阿里云安全组默认规则是:白名单
vpc(Virtual Private Cloud)虚拟私有云:可以自定义网段,vpc网段相当于一个大的网段(局域网),还可以通过创建vsw虚拟交换机划分子网。
相当于构建自己的云端内部机房网络。
创建专有网络提供给服务器使用
设置专有网络
设置交换机
(这里创建了个两个可用区,作为示例,后续只用到了可用区H的1.0网段)
创建成功
修改
位置
找到位置后选择好地区(和ESC一致),然后点击创建安全组。
设置vpc专有网络
基本设置
设置访问规则
出方向默认没有,可以自行添加
位置
自定义购买设置步骤
抢占式火爆地区可能不行,改选按量
确认订单
Relational Database Service
此处选择最便宜的方案:
创建好后需等待一段时间
添加用户
创建数据库
先创键一个普通用户给要创建的数据库
返回后“基本信息”点击“查看链接详情”查看
用内网地址访问,它对应的IP地址不固定,可能会改变
链接之前创建的ECS
登录账户
若使用Xshell需要用该公网IP(47.99.101.238)登录
登录成功后使用ping命令检测之前的内网地址
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# ping rm-bp1hn3m192782bscu.mysql.rds.aliyuncs.com
安装MySQL客户端
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# yum install -y mariadb
登录MySQL
x1[root@iZbp1gfohr5kj9fryenok0Z ~]# mysql -uroot -pRoot@123 -hrm-bp1hn3m192782bscu.mysql.rds.aliyuncs.com
2Welcome to the MariaDB monitor. Commands end with ; or \g.
3Your MySQL connection id is 223
4Server version: 5.7.44-log Source distribution
5
6Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
7
8Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
9
10MySQL [(none)]>
检查数据库
xxxxxxxxxx
271MySQL [(none)]> show databases;
2+--------------------+
3| Database |
4+--------------------+
5| information_schema |
6| __recycle_bin__ |
7| mysql |
8| performance_schema |
9| rds01 |
10| sys |
11+--------------------+
126 rows in set (0.00 sec)
13
14MySQL [(none)]> select user,host from mysql.user;
15+---------------+-----------+
16| user | host |
17+---------------+-----------+
18| aurora | % |
19| root | % |
20| user01 | % |
21| aliyun_root | 127.0.0.1 |
22| mysql.session | localhost |
23| mysql.sys | localhost |
24+---------------+-----------+
256 rows in set (0.00 sec)
26
27MySQL [(none)]>
本地数据库迁移至云端RDS
这里将本地虚拟机中MySQL的company数据库迁移至RDS(mysql版本需一致)
通过mysqldump命令备份company库
xxxxxxxxxx
71[root@MASTER temp]# mysqldump -uroot -p123456 company > company.sql
2mysqldump: [Warning] Using a password on the command line interface can be insecure.
3[root@MASTER temp]# ls
4company.sql
5[root@MASTER temp]# pwd
6/temp
7[root@MASTER temp]#
通过scp命令将company.sql发松至ESC服务端的/home目录下
xxxxxxxxxx
41[root@MASTER temp]# scp company.sql root@47.99.101.238:/home
2root@47.99.101.238's password:
3company.sql 100% 4580 4.5KB/s 00:00
4[root@MASTER temp]#
xxxxxxxxxx
31[root@iZbp1gfohr5kj9fryenok0Z home]# ls
2company.sql
3[root@iZbp1gfohr5kj9fryenok0Z home]#
先创建company数据库,可以在阿里云创建(见6.2),这里使用mysql指令创建
xxxxxxxxxx
11MySQL [(none)]> create database company character set utf8mb4;
将company.sql导入数据库(##### 下方域名变了,由于上面创建的mysql版本为5.7,而本地数据库版本为MySQL8,两个版本的utf8md4不兼容,此处重新创建了一个mysql8版本的RDS用于数据迁移 #####)
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z home]# mysql -uroot -pRoot@123 -hrm-bp1jgqs7i6k85627z.mysql.rds.aliyuncs.com company < company.sql
方法一:👆在数据库外进行数据导入
xxxxxxxxxx
31MySQL [(none)]> use company;
2Database changed
3MySQL [company]> source /home/company.sql
方法二:👆在数据库内使用source进行数据导入
对比项 | 文件存储 NAS | 对象存储 OSS | 块存储 |
---|---|---|---|
特点 | 原有使用单机本地文件系统的应用无需修改,即可直接访问。提供高吞吐和高IOPS的同时,支持文件的随机读写和在线修改 | 支持公网访问,一个低成本的海量共享存储空间,适合存储写入后较少修改的数据 | 块级存储,可随机读写,类似物理硬盘,支持分区格式化并建立文件系统 |
应用场景 | 主要应用于科学计算、容器数据持久化和企业在线生产应用的数据存储。如:AI计算、基因计算、药物计算、容器共享PV、日志数据持久化、CI/CD平台、云桌面数据文件共享等 | 主要应用于基于对象API开发的互联网应用程序的数据存储。如:互联网业务的音视频存储、数据湖、云相册、个人/企业网盘类应用 | 适用于OLTP数据库、NoSQL数据库等IO密集型的高性能、低时延业务场景 |
访问模式 | 上千个ECS或上万个容器,通过POSIX接口并发读取相同文件,随机读写 | 数百万客户端通过SDK、RESTful并发读相同文件,追加写 | EBS是裸磁盘,挂载到ECS后不能被操作系统应用直接访问,需要格式化成文件系统(ext3、ext4、NTFS等)后访问。当不多于16台ECS实例同时访问一块云盘时,需要使用集群文件系统(例如,OCFS2、GFS2、Veritas CFS、Oracle ACFS和DBFS等),保障多实例间数据同步。更多信息,请参见云盘多重挂载功能 |
最低时延 | 毫秒级(NFS或SMB方式访问)微秒级(容器ACK通过CNFS方式访问) | 几十毫秒级 | 微秒级 |
单实例最大吞吐 | 20 GB/s | 2~100 Gbps单个账号上传和下载最大吞吐在各个地域不同。详细信息,请参见使用限制及性能指标。 | 数GB/s |
容量 | GiB~PiB | 无限制 | GiB~TiB |
文件级别的授权 | 支持 | 支持 | 不支持 |
数据存储方式 | 目录树的组织形式 | 扁平的文件组织形式 | 需拆分数据到任意划分且大小相同的卷中 |
协议 | NFS和SMB协议 | HTTP/HTTPS协议 | 标准虚拟块设备协议接口或NVMe协议接口 |
这里选择通用型NAS进行购买
确认订单
👆点击蓝色名字进入配置
通过ping命令测试挂载点地址
xxxxxxxxxx
111[root@iZbp1gfohr5kj9fryenok0Z ~]# ping 0f9374b26c-ffl45.cn-hangzhou.nas.aliyuncs.com
2PING 0f9374b26c-ffl45.cn-hangzhou.nas.aliyuncs.com (172.16.1.84) 56(84) bytes of data.
364 bytes from 172.16.1.84 (172.16.1.84): icmp_seq=1 ttl=102 time=1.79 ms
464 bytes from 172.16.1.84 (172.16.1.84): icmp_seq=2 ttl=102 time=1.68 ms
564 bytes from 172.16.1.84 (172.16.1.84): icmp_seq=3 ttl=102 time=1.66 ms
664 bytes from 172.16.1.84 (172.16.1.84): icmp_seq=4 ttl=102 time=1.66 ms
7^C
8--- 0f9374b26c-ffl45.cn-hangzhou.nas.aliyuncs.com ping statistics ---
94 packets transmitted, 4 received, 0% packet loss, time 3003ms
10rtt min/avg/max/mdev = 1.666/1.702/1.792/0.059 ms
11[root@iZbp1gfohr5kj9fryenok0Z ~]#
下载nfs-utils(这里已经下载好了)
xxxxxxxxxx
61[root@iZbp1gfohr5kj9fryenok0Z ~]# yum install -y nfs-utils
2Loaded plugins: fastestmirror
3Loading mirror speeds from cached hostfile
4Package 1:nfs-utils-1.3.0-0.68.el7.2.x86_64 already installed and latest version
5Nothing to do
6[root@iZbp1gfohr5kj9fryenok0Z ~]#
挂载
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# mount -t nfs 0f9374b26c-ffl45.cn-hangzhou.nas.aliyuncs.com:/ /mnt/nas/
(多个计算节点挂载同一文件系统,可实现数据同步-共享文件/目录)
部署https://kodcloud.com/download/
准备LNMP和配置
LNMP是指一组常被用于构建 Web 服务器环境的开源软件组合,由 Linux、Nginx、MySQL/MariaDB、PHP/Perl/Python 组成
安装nginx
xxxxxxxxxx
31[root@iZbp1gfohr5kj9fryenok0Z home]# yum install -y nginx
2[root@iZbp17x0rrsdxr7ef8mjymZ ~]# systemctl enable nginx
3[root@iZbp17x0rrsdxr7ef8mjymZ ~]# systemctl start nginx
安装php7.2
这里采取在线安装方式:
①清除历史版本,防止发生php冲突
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ php]# yum remove -y php*
②安装yum源
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ php]# yum install epel-release -y
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ php]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
③安装扩展包
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ php]# yum -y install php72w php72w-cli php72w-fpm ph72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-mysqlnd pp72w-opcache php72w-pdo php72w-xml
最后显示
xxxxxxxxxx
191Installed:
2mod_php72w.x86_64 0:7.2.34-1.w7 php72w-cli.x86_64 0:7.2.34-1.w7
3php72w-common.x86_64 0:7.2.34-1.w7 php72w-devel.x86_64 0:7.2.34-1.w7
4php72w-embedded.x86_64 0:7.2.34-1.w7 php72w-fpm.x86_64 0:7.2.34-1.w7
5php72w-gd.x86_64 0:7.2.34-1.w7 php72w-mbstring.x86_64 0:7.2.34-1.w7
6php72w-mysqlnd.x86_64 0:7.2.34-1.w7 php72w-opcache.x86_64 0:7.2.34-1.w7
7php72w-pdo.x86_64 0:7.2.34-1.w7 php72w-xml.x86_64 0:7.2.34-1.w7
8
9Dependency Installed:
10autoconf.noarch 0:2.69-11.el7 automake.noarch 0:1.13.4-3.el7
11libX11.x86_64 0:1.6.7-5.el7_9 libX11-common.noarch 0:1.6.7-5.el7_9
12libXau.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.12-2.el7_9
13libargon2.x86_64 0:20161029-3.el7 libjpeg-turbo.x86_64 0:1.2.90-8.el7
14libwebp.x86_64 0:0.3.0-11.el7 libxcb.x86_64 0:1.13-1.el7
15libxslt.x86_64 0:1.1.28-6.el7 pcre-devel.x86_64 0:8.32-17.el7
16perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Test-Harness.noarch 0:3.28-3.el7
17perl-Thread-Queue.noarch 0:3.02-2.el7
18
19Complete!
④查看版本
xxxxxxxxxx
51[root@iZbp17x0rrsdxr7ef8mjymZ php]# php -version
2PHP 7.2.34 (cli) (built: Oct 1 2020 13:37:37) ( NTS )
3Copyright (c) 1997-2018 The PHP Group
4Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
5with Zend OPcache v7.2.34, Copyright (c) 1999-2018, by Zend Technologies
⑤启动服务
xxxxxxxxxx
21[root@iZbp17x0rrsdxr7ef8mjymZ php]# systemctl enable php-fpm
2[root@iZbp17x0rrsdxr7ef8mjymZ php]# systemctl start php-fpm
编辑nginx配置文件(/etc/nginx/conf.d/目录下,该目录默认为空)
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ ~]# vim /etc/nginx/conf.d/cloud.linux.cn.conf
文件内容:
xxxxxxxxxx
141server {
2listen 80;
3server_name cloud.linux.cn;
4root /app/code/cloud;
5location / {
6index index.php;
7}
8location ~ \.php$ {
9fastcgi_pass 127.0.0.1:9000;
10fastcgi_index index.php;
11fastcgi_param SCRIPT_FILENAME /app/code/cloud/$fastcgi_script_name;
12include fastcgi_params;
13}
14}
编辑php配置文件
xxxxxxxxxx
11[root@iZbp17x0rrsdxr7ef8mjymZ ~]# vim /etc/php-fpm.d/www.conf
更改文件中的user和group = nignx
xxxxxxxxxx
31[root@iZbp17x0rrsdxr7ef8mjymZ ~]# egrep '^user|^group' /etc/php-fpm.d/www.conf
2user = nginx
3group = nginx
重启nginx、php-fpm服务
xxxxxxxxxx
181[root@iZbp17x0rrsdxr7ef8mjymZ ~]# systemctl restart nginx
2[root@iZbp17x0rrsdxr7ef8mjymZ ~]# systemctl restart php-fpm
3[root@iZbp17x0rrsdxr7ef8mjymZ ~]# ss -tunlp | egrep 'nginx|php'
4tcp LISTEN 0 128 127.0.0.1:9000 *:* users:(("php-fpm",pid=13803,fd=9),("php-fpm",pid=13802,fd=9),("php-fpm",pid=13801,fd=9),("php-fpm",pid=13800,fd=9),("php-fpm",pid=13799,fd=9),("php-fpm",pid=13798,fd=7))
5tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=13730,fd=6),("nginx",pid=13729,fd=6),("nginx",pid=13728,fd=6))
6tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=13730,fd=7),("nginx",pid=13729,fd=7),("nginx",pid=13728,fd=7))
7[root@iZbp17x0rrsdxr7ef8mjymZ ~]# ps -ef | egrep 'nginx|php'
8root 13728 1 0 09:55 ? 00:00:00 nginx: master process /usr/sbin/nginx
9nginx 13729 13728 0 09:55 ? 00:00:00 nginx: worker process
10nginx 13730 13728 0 09:55 ? 00:00:00 nginx: worker process
11root 13798 1 0 10:04 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
12nginx 13799 13798 0 10:04 ? 00:00:00 php-fpm: pool www
13nginx 13800 13798 0 10:04 ? 00:00:00 php-fpm: pool www
14nginx 13801 13798 0 10:04 ? 00:00:00 php-fpm: pool www
15nginx 13802 13798 0 10:04 ? 00:00:00 php-fpm: pool www
16nginx 13803 13798 0 10:04 ? 00:00:00 php-fpm: pool www
17root 13835 13515 0 10:07 pts/1 00:00:00 grep -E --color=auto nginx|php
18[root@iZbp17x0rrsdxr7ef8mjymZ ~]#
部署代码-链接rds数据库
打开网站:下载 - 可道云-私有云存储&协同办公平台企业网盘企业云盘网盘云盘
找到Linux安装,鼠标放上去会显示命令行安装命令
下载软件(这里需要用到wget和unzip工具,默认wget已经安装好,还需要安装unzip)
xxxxxxxxxx
61[root@iZbp17x0rrsdxr7ef8mjymZ ~]# yum -y install unzip
2
3[root@iZbp17x0rrsdxr7ef8mjymZ ~]# wget https://static.kodcloud.com/update/download/kodbox.1.55.zip
4[root@iZbp17x0rrsdxr7ef8mjymZ ~]# mkdir -p /app/code/cloud
5[root@iZbp17x0rrsdxr7ef8mjymZ ~]# unzip kodbox.1.55.zip -d /app/code/cloud/
6[root@iZbp17x0rrsdxr7ef8mjymZ ~]# chown -R nginx.nginx /app/code/cloud/
最后将
/app/code/cloud/
目录及其内部的所有文件和子目录的所有者(user)和所属组(group)都更改为nginx
可以直接用公网IP访问网页进行配置与登录
每一项全部打勾鼠标往下滑动可以点击下一步
密码稍微设置复杂一点,设置好后就可以登录了
存储挂载和调试
测试
-从Windows拖入一些文件
xxxxxxxxxx
211[root@iZbp17x0rrsdxr7ef8mjymZ 26_bd41282b]# yum -y install tree
2[root@iZbp17x0rrsdxr7ef8mjymZ 26_bd41282b]# ls /app/code/cloud/
3app Changelog.md config data index.php plugins static
4[root@iZbp17x0rrsdxr7ef8mjymZ 26_bd41282b]# tree /app/code/cloud/data/
5/app/code/cloud/data/
6├── files
7│ ├── 202412
8│ │ └── 26_bd41282b
9│ │ ├── a.png
10│ │ ├── b.png
11│ │ ├── cover_4279143ba14d8b6f75aef81f7b75a0c8266918_250.png
12│ │ ├── cover_7c6e13a19ff94441d32fe2c623efe91a352644_250.png
13│ │ ├── cover_b85e3e87fc0a60e791f4724140289791274839_250.png
14│ │ ├── c.png
15│ │ ├── d.png
16│ │ ├── e.png
17│ │ ├── icloud.oexe
18│ │ ├── index.html
19│ │ └── \351\253\230\345\276\267\345\234\260\345\233\276.oexe
20│ └── index.html
21├── index.html
挂载NAS到data/files/目录下
分离之前的挂载
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# umount /mnt/nas/
由于data目录不为空,先将原data目录移至/tmp/目录下
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# mv /app/code/cloud/data/files /tmp/
创建新的data目录
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# mkdir /app/code/cloud/data/files
挂载NAS
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# mount -t nfs 0f9374b26c-ffl45.cn-hangzhou.nas.aliyuncs.com:/ /app/code/cloud/data/files/
再将原来的数据移回挂载目录
xxxxxxxxxx
11[root@iZbp1gfohr5kj9fryenok0Z ~]# mv /tmp/files/* /app/code/cloud/data/files/
应用:程序代码中通过RAM AK(id&secret)访问
初次使用需要开通购买,一直点击购买即可。
购买完成后就可以进入对象存储OSS概览了
创建Bucket(1个Bucket=1个OSS存储对象),可以在概览中创建也可以在Bucket列表中创建。
这里选择最便宜的选项进行创建~具体根据描述和需求进行选择😊
这样就可以完成创建了。
创建成功后,进入创建的Bucket页面就可以当网盘使用
-上传文件:
需要准备
RAM子账号,拥有访问oss权限(需要先完成下一章RAM访问控制,登录创建的账号经测试可以对上一小节创建的Bucket进行读写。)
创建好oss对象存储(上一小节已经完成了创建)
配置代码
进入可道云后台管理
Endpoint点击创建的Bucket,进入概览查看
点击“上传”进行测试(这里上传了5张图片)
回到阿里云Bucket列表,点开kodbox/目录可以看到上传进来的图片
访问控制:类似于Linux sudo权限,类似阿里云的子账号。
通过RAM,你能够创建用户、用户组,为不同的用户或用户组授予细粒度的权限。
应用场景:刚刚入职的运维人员;开发(程序代码调用)。
使用
这里创建开发组和运维组
RAM用户访问方式 控制台访问 web页面登录,手动操作阿里云资源-运维、运营。 永久使用 AccessKey 访问 开发的程序代码中调用,阿里云的资源。AK等同于用户名(id)和密码(secret)。
创建提交后会出来提示,AccessKey的id和secret只会出来一次,需要创建账号后保存,没有AK就需要重新创建用户了。
--这里可以直接点击操作下的复制,里面包含了用户的所有信息:
用户登录名称 hz-dev-cloud@1789734920922343.onaliyun.com 登录密码 12345678 AccessKey ID LTAI5tEkbkCrBTqEsxRiMDoy AccessKey Secret wDbRe54EyovKhEEI0G3tBRpWW1UoKB
--也可以点击左上角下载VSC文件,以表格形式保存了上述信息。
针对用户组授权
将用户添加到组,这里将刚刚创建的用户添加到开发组。
给用户组授权,这里授予OSS权限
用与原阿里云登录不同的浏览器登录:阿里云-RAM用户登录
登录后测试,进入专有网络VPC会显示没有权限。
对比项 | ALB | NLB | CLB |
---|---|---|---|
产品定位 | 强大的七层处理能力与丰富的高级路由功能聚焦HTTP、HTTPS和QUIC应用层协议面向应用层交付 | 强大的四层处理能力与大规模SSL卸载功能聚焦TCP、UDP和TCPSSL协议面向网络层交付 | 具备良好的四层和基础的七层处理能力支持TCP、UDP、HTTP和HTTPS协议 |
产品架构与性能 | 基于NFV虚拟化平台,支持弹性伸缩单实例最大支持100万QPS | 基于NFV虚拟化平台,不依赖物理机,支持弹性和快速扩容等需求单实例最大支持1亿并发 | 基于物理机架构单实例最大支持100万并发、5万QPS |
转发能力 | 丰富七层特性,基于内容的路由HTTP标头改写、重定向、重写、限速等 | 丰富四层高级特性,支持TCPSSL卸载洪峰限速、优雅中断、Anyport等 | 四、七层基础能力仅支持基于域名或URL转发 |
后端业务类型 | 云服务器ECS弹性网卡ENI弹性容器实例ECIIP地址函数计算FC | 云服务器ECS弹性网卡ENI弹性容器实例ECIIP地址 | 云服务器ECS弹性网卡ENI弹性容器实例ECI |
运维能力 | 自动弹性处理能力随着业务峰值自动伸缩,无需人工干预 | 自动弹性处理能力随着业务峰值自动伸缩,无需人工干预 | 按规格售卖模式下需要主动管理规格需要预估业务峰值 |
云原生集成 | 云原生Ingress网关流量拆分、流量镜像、灰度发布、蓝绿测试 | 支持ACK/ASK集成(1.24版本以后) | 支持较弱,需要与阿里云ACK或ASK等容器服务结合使用 |
典型应用场景 | 互联网应用七层高性能自动弹性场景音视频应用大流量低时延场景云原生应用金丝雀蓝绿发布场景 | 四层大流量高并发业务场景物联网、车联网等IoT业务入口多活容灾、IDC云上出入口场景 | 网站、系统四层流量分发高可靠场景大并发高性能网络分流场景同城灾备、跨地域容灾场景 |
创建两台云服务器ECS
这里登录凭证选择密钥对(扩展)
创建后会自动下载一个pem文件
这里设置了自定义的实例名和主机名
hostname IP root000000 47.97.3.35 root000001 121.40.66.128 连接Xshell
导入后点击取消,用户密钥选择刚刚导入的选项,再点击确定就可以连接了
登录成功!
另外一台的连接只需要修改IP即可
准备nginx
在会话窗口点击右键选择“发送键输入到”->“所有会话”可以同步操作所有会话窗口
①下载nginx->②开机启动->③启动nginx->④修改网页内容
xxxxxxxxxx
41yum install -y nginx
2systemctl enable nginx
3systemctl start nginx
4echo `hostname`.cn slb > /usr/share/nginx/html/index.html
配置如下
确认订单->开通
上述配置的tingine代码版:(网址:ngx_http_upstream_check_module - The Tengine Web Server)
xxxxxxxxxx
81upstream cluster1 {
2server 47.97.3.35:80 weight=100;
3server 121.40.66.128:80 weight=100;
4
5check interval=2000 rise=3 fall=3 timeout=5000 type=http;
6check_http_send "HEAD / HTTP/1.0\r\n\r\n;";
7check_http_expect_alive http_2xx http_3xx;
8}
配置审核无误即可提交
创建成功后访问服务地址116.62.179.194
xxxxxxxxxx
211[root@root000000 ~]# curl http://116.62.179.194/
2root000000.cn slb
3[root@root000000 ~]# curl http://116.62.179.194/
4root000000.cn slb
5[root@root000000 ~]# curl http://116.62.179.194/
6root000001.cn slb
7[root@root000000 ~]# curl http://116.62.179.194/
8root000001.cn slb
9[root@root000000 ~]# curl http://116.62.179.194/
10root000000.cn slb
11[root@root000000 ~]# curl http://116.62.179.194/
12root000001.cn slb
13[root@root000000 ~]# curl http://116.62.179.194/
14root000000.cn slb
15[root@root000000 ~]# curl http://116.62.179.194/
16root000001.cn slb
17[root@root000000 ~]# curl http://116.62.179.194/
18root000000.cn slb
19[root@root000000 ~]# curl http://116.62.179.194/
20root000001.cn slb
21[root@root000000 ~]#
还是用CLB创建的两台服务器
这里选择创建两个服务器组,分别添加两个ECS服务器
服务器组 | 服务器 |
---|---|
alb-grp01 | 47.97.3.35 |
alb-grp02 | 121.40.66.128 |
后面配置选择默认
创建第二个组方式和上述一样,这里省略了。
添加一个规则,针对转发grp01
编辑默认规则转发grp02
保存后就可以点击返回了
返回实例详情,复制ALB域名
不能直接使用这个域名进行访问,需要借助自己注册的域名通过CNAME来访问这个域名。(见下一章)
域名与IP的对应关系
DNS记录类型 | ||
---|---|---|
A记录 | 域名解析IPv4地址 | 大部分场景默认使用 |
CNAME记录 | 别名记录:域名01解析域名02 | 用于CDN、WAF产品中 |
TXT记录 | 用于认证 | 用于验证域名所有者 |
MX记录 | 用于配置企业邮箱 | 创建企业邮箱时 |
例:www.jd.com经过三次CNAME记录解析后再进行A记录解析访问到真实的IP
@主机记录代表无前缀,想要直接使用域名,不添加前缀就能访问,就需要添加@主机记录,这里已经添加好了,一般@主机记录和www主机记录指向同一IP。
*主机记录,代表无论主机记录是什么,都解析到记录值IP。
TTL:time to live 缓存时间
配置好后,访问kill.fangluyan.cloud = 访问47.99.124.181
(需通过dig TXT获取记录值)
上线网站的方式
①准备一台服务器
②在这个服务器存放好网站文件
③买一个域名,让这个域名指向服务器的IP地址
阿里云上线网站步骤:
①在阿里云购买域名、云服务器ECS(需按包年包月付费3个月以上,可以购买99/年的)
②域名需完成实名认证和过户
③备案(第一次过户完需要先等待2~3天)
阿里云内容分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。阿里云CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。
阿里云在全球拥有3200+节点。中国内地拥有2300+节点,覆盖31个省级区域;海外、中国香港、中国澳门和中国台湾拥有900+节点,覆盖70多个国家和地区。全网带宽输出能力达180 Tbps。
CDN将源站资源缓存到阿里云遍布全球的加速节点,当终端用户请求访问和获取源站资源时无需回源,可就近获取CDN节点上已经缓存的资源,提高资源访问速度,同时分担源站压力
-这个域名要是一个cname记录的主机记录,而它的记录值不是fangluyan.cloud,而是第3步配置中所给的域名,为了区分A记录的@主机记录,这个域名给他一个前缀,这里是cdn。
首次添加这里需要按要求去添加域名解析记录。
这里添加好后直接点击验证就可以了。
👆这里才是真正加速的站点。
这里可以自己设置一下缓存过期时间,其他使用默认配置,然后点击“一键配置”。
按要求设置CNAME记录:
设置好CNAME后等待一会,刷新这里显示已配置即可。
因为上面这个截屏时不是第一次访问了,现在用nginx默认页来进行测试第一次访问:
第二次:
刷新和预热CDN节点的缓存资源_CDN(CDN)-阿里云帮助中心
预热:源站主动将对应的资源缓存到L2节点,使得用户第一次访问就能命中CDN缓存。
刷新:仅删除cdn缓存。
测试-刷新:
记得在域名后面加斜杠。
等待清除完成。
再次访问页面,发现没有一个命中了。
测试-预热:
因为上面访问了一次,必然使得CDN缓存已经存在,预热之前,需要再次进行一次刷新。
这里,我已经又刷新了一遍,过程省略。
现在添加预热。
再次访问,L2缓存已经变成了命中。
WAF防护墙
应用防火墙
态势感知
云安全中心(云盾)
WEB应用防火墙
选择过程略。
开通后连入
这里选择连入ECS,上面CDN的服务。
数据库迁移、订阅、同步工具。
支持故障容灾,链路的秒级恢复。
支持断点续传。
数据迁移类型:结构对象迁移、全量数据迁移、增量数据迁移。
提供不停机迁移,只有当业务从源实例切换到目标实例期间会影响业务,停机时间降低至分钟级。
异地多活:异地构建多个业务单元,各个业务单元之间双向同步。解决地理位置远的用户访问延迟高的问题。
通过增量数据订阅,实现轻量级缓存更新。(RDS->Redis,原本需要通过双写,实现数据更新,可以通过数据订阅,直接从RDS写入->SDK订阅变更数据->Redis)
通过数据订阅,实现业务异步解耦。(除了通过消息队列来实现)(买家下单后,SDK记录变更数据,触发库存、物流等下游业务逻辑。)
自动扩缩ECS
内网ECS配置公网NAT网关访问外部网络(贵)可以设置不同可用区
NAT网关需要有公网IP才能使用
配置步骤:
1.购买NAT网关
2.绑定EIP(弹性公网IP)
3.设置S(source)NAT/D(destination)NAT规则
SNAT,就是设置EIP和NAT网关的代理方(从大到小可以是VPC、交换机、ECS)。
DNAT,就是设置外部可以通过访问EIP的哪个端口访问到NAT网关代理的内网的哪个ECS私网IP的哪个端口。
(S/DNAT设置都和外部是谁无关)
一个私网IP通过NAT网关访问互联网的过程:例如,私网的IP-A访问百度的IP-B,此时,IP-A是源,IP-B是目标;数据包到达NAT网关时,源IP被换成了公网IP的IP-C;数据包到达百度服务器时,百度服务器需要返还数据包给过来时的源IP,这时,源IP变成了IP-B,目标IP变成了IP-C;数据包回到NAT网关时,目标IP变为了IP-A;最后IP-A获取到百度返回的数据。
不同网段VPC内网间通信的高速通道
这里暂时选最便宜配置
高级选项使用默认
开通SLS日志服务
创建project
查看更多日志应用,选择k8s事件中心
创建联系人
返回配置界面,点击刷新会出现默认分组
其他选择默认
可能会出现问题,那么该开通的开通,该授权的授权。
点击创建,等待创建成功。
至此,还不能直接使用,在任意节点使用kubectl命令时,会出现如下错误:
xxxxxxxxxx
41[root@iZbp1fi88ryk50220a747hZ ~]# kubectl get nodes
2E0318 19:09:37.301474 37085 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
3... ...
4The connection to the server localhost:8080 was refused - did you specify the right host or port?
因为还需要为k8s集群配置master节点。
随便选择一个节点做master节点,具体操作如下:
master | worker |
---|---|
10.137.170.204 | 10.137.170.205 |
在选择的master节点的家目录下(这里选择root/),创建.kube目录,再在.kube目录下创建config文件,将复制的内容复制到config文件中,这样就可以了。
验证:
xxxxxxxxxx
191 root@iZbp1fi88ryk50220a747hZ ~ # mkdir .kube
2 root@iZbp1fi88ryk50220a747hZ ~ # ls -a
3. .. .bash_history .bash_logout .bash_profile .bashrc .cshrc .kube .pip .pydistutils.cfg .ssh .tcshrc
4 root@iZbp1fi88ryk50220a747hZ ~ # cd .kube/
5 root@iZbp1fi88ryk50220a747hZ .kube # vim config
6 root@iZbp1fi88ryk50220a747hZ .kube # kubectl get namespace
7NAME STATUS AGE
8ack-csi-fuse Active 120m
9arms-prom Active 120m
10default Active 122m
11kube-node-lease Active 122m
12kube-public Active 122m
13kube-system Active 122m
14security-inspector Active 120m
15 root@iZbp1fi88ryk50220a747hZ .kube # kubectl get nodes
16NAME STATUS ROLES AGE VERSION
17cn-hangzhou.10.137.170.204 Ready <none> 118m v1.32.1-aliyun.1
18cn-hangzhou.10.137.170.205 Ready <none> 118m v1.32.1-aliyun.1
19 root@iZbp1fi88ryk50220a747hZ .kube #
因为创建的ecs没有设置eip,所以无法通过外部镜像仓库拉取镜像。(见19章)
选择镜像
再配置一下Pod开放端口,其他默认。
配置至此就可以了,创建后查看Pod创建状态。
是可以内部访问的。
(这里使用yaml方式创建更方便,只需要改一下image就行了。)
先修改一下这两个Pod的nginx内容
xxxxxxxxxx
21[root@iZbp1hcdskagikou62as6pZ .kube]# kubectl exec nginx-test-c65965d88-gf6sj -- bash -c 'echo "Pod 01" > /usr/share/nginx/html/index.html'
2[root@iZbp1hcdskagikou62as6pZ .kube]# kubectl exec nginx-test-c65965d88-t5mr9 -- bash -c 'echo "Pod 02" > /usr/share/nginx/html/index.html'
检测(也可以网页访问IP):
xxxxxxxxxx
121[root@iZbp1hcdskagikou62as6pZ .kube]# kubectl get svc
2NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
3kubernetes ClusterIP 192.168.0.1 <none> 443/TCP 86m
4nginx-svc LoadBalancer 192.168.41.192 120.26.249.219 80:32445/TCP 5m29s
5[root@iZbp1hcdskagikou62as6pZ .kube]# curl 120.26.249.219
6Pod 01
7[root@iZbp1hcdskagikou62as6pZ .kube]# curl 120.26.249.219
8Pod 02
9[root@iZbp1hcdskagikou62as6pZ .kube]# curl 120.26.249.219
10Pod 01
11[root@iZbp1hcdskagikou62as6pZ .kube]# curl 120.26.249.219
12Pod 02
这里为后面使用ingress做准备,直接修改上面的svc
xxxxxxxxxx
81[root@iZbp1hcdskagikou62as6pZ .kube]# kubectl get svc
2NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
3kubernetes ClusterIP 192.168.0.1 <none> 443/TCP 90m
4nginx-svc ClusterIP 192.168.41.192 <none> 80/TCP 9m17s
5[root@iZbp1hcdskagikou62as6pZ .kube]# curl 192.168.41.192
6Pod 01
7[root@iZbp1hcdskagikou62as6pZ .kube]# curl 192.168.41.192
8Pod 02
ingress配置
配置好后ingress会有一个端点IP
设置域名解析
至此就可以在网页通过该域名访问service了。
xxxxxxxxxx
41[root@iZbp1hcdskagikou62as6pZ .kube]# curl www.fangluyan.cloud
2Pod 02
3[root@iZbp1hcdskagikou62as6pZ .kube]# curl www.fangluyan.cloud
4Pod 01
阿里云的私有镜像仓库(不用自己搭建harbor了)
这里创建个人实例(免费)
设置密码,然后进行下手机验证。
这里使用本地仓库
这里创建私有仓库后,由于里面没有东西,所以使用之前创建的公网IP的ECS登录该仓库,将一些镜像放进去(推送至Registry)。
xxxxxxxxxx
341# 登录
2[root@genius ~]# docker login --username=aliyun2394756379 crpi-iyu8ogl9ctsg1nt9.cn-hangzhou.personal.cr.aliyuncs.com
3Password:
4WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
5Configure a credential helper to remove this warning. See
6https://docs.docker.com/engine/reference/commandline/login/#credential-stores
7
8Login Succeeded
9[root@genius ~]# docker images
10REPOSITORY TAG IMAGE ID CREATED SIZE
11vim-rockylinux-lts latest 084a0ce2528d 2 months ago 297MB
12nginx latest 605c77e624dd 3 years ago 141MB
13tomcat latest fb5657adc892 3 years ago 680MB
14redis latest 7614ae9453d1 3 years ago 113MB
15mysql latest 3218b38490ce 3 years ago 516MB
16rockylinux/rockylinux latest a1e37a3cce8f 3 years ago 205MB
17portainer/portainer latest 580c0e4e98b0 4 years ago 79.1MB
18java 8 d23bdf5b1b1b 8 years ago 643MB
19# 将已有镜像打成新的镜像仓库与版本号
20[root@genius ~]# docker tag 605 crpi-iyu8ogl9ctsg1nt9.cn-hangzhou.personal.cr.aliyuncs.com/ljs666/nginx:1.0
21[root@genius ~]# docker images | grep nginx
22crpi-iyu8ogl9ctsg1nt9.cn-hangzhou.personal.cr.aliyuncs.com/ljs666/nginx 1.0 605c77e624dd 3 years ago 141MB
23nginx latest 605c77e624dd 3 years ago 141MB
24# 推送镜像
25[root@genius ~]# docker push crpi-iyu8ogl9ctsg1nt9.cn-hangzhou.personal.cr.aliyuncs.com/ljs666/nginx:1.0
26The push refers to repository [crpi-iyu8ogl9ctsg1nt9.cn-hangzhou.personal.cr.aliyuncs.com/ljs666/nginx]
27d874fd2bc83b: Pushed
2832ce5f6a5106: Pushed
29f1db227348d0: Pushed
30b8d6e692a25e: Pushed
31e379e8aedd4d: Pushed
322edcec3590a4: Pushed
331.0: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
34[root@genius ~]#
到阿里云界面可以看到多出了一个镜像版本。
部署过程略。
代替Gitlab
自带的测试项目Codeup-Demo,效果修改位置:
xxxxxxxxxx
91[root@genius app]# curl http://47.99.124.181:8080/
2Welcome to Codeup[root@genius app]# curl http://47.99.124.181:8080/
3Nice to meet you[root@genius app]# curl http://47.99.124.181:8080/
4Nice to meet you[root@genius app]# curl http://47.99.124.181:8080/
5Nice to meet you[root@genius app]# curl http://47.99.124.181:8080/
6Nice to meet you[root@genius app]# curl http://47.99.124.181:8080/
7Welcome to Codeup[root@genius app]# curl http://47.99.124.181:8080/
8Welcome to Codeup[root@genius app]# curl http://47.99.124.181:8080/
9Nice to meet you[root@genius app]#
代替Jenkins
官方查看文档:如何初始化工作流程_云效(Apsara Devops)-阿里云帮助中心
ssl证书要钱。。。
PolarDB-X 云原生分布式数据库(原D(Distributed)RDS-分布式关系型数据库服务)
什么是云原生数据库PolarDB分布式版_云原生数据库 PolarDB(PolarDB)-阿里云帮助中心
特点:无状态、灵活、稳定、高效
分布式:多个机器共同服务,解决高并发,高容量,低延时。
数据分片存放,从而实现关系型数据库动态扩展。
主要衡量是否需要升配的指标:CPU利用率(80~90%)
主要衡量性能的指标:响应时间(RT)、容量(QPS)
主要衡量是否需要扩容的指标:IOPS、CPU、磁盘容量
tips:
IOPS、CPU任一指标长期保持在80%以上,或频繁收到报警,解决顺序①SQL优化②升配③设置只读库④扩容
磁盘存储容量的余量建议保持在30%以上;磁盘容量一般包含数据空间、系统文件空间、binlog文件空间。
NoSQL,指非关系型数据库,用于超大规模数据存储。
MongoDB∈NoSQL,C++编写的,基于分布式文件存储的开源数据库系统。将数据存储为一个文档,数据结构由键值对组成;文档类似于JSON对象,字段可以包含其他文档,数组及数组文档。
支持架构:单节点、副本集、分片集群
阿里自主研发的兼容Redis协议的混合存储(内存+磁盘)产品。
使用磁盘存储全量数据,将热数据保存到内存中。
通过架构图方式搭建云机房,不用一个个开通服务。
例:外部可以通过eip访问服务器