部署Docker swarm集群

博文大纲
一、Docker swarm简介
二、环境准备
三、初始化Swarm群集
四、配置node02、node03加入、离开swarm群集
五、部署图形化UI
六、docker swarm群集的service服务配置
七、实现service的扩容、收缩
八、docker swarm网络
九、搭建registry私有仓库
十、service服务版本的升级与回滚
十一、docker Swarm群集常用命令
十二、docker swarm总结

一、Docker swarm简介

Docker swarm与docker-compose一样,都是docker官方推出的docker容器的编排工具。但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

Docker swarm:其作用就是把若干个Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。

Docker swarm中有三种角色:

  • Manager node:负责执行容器的编排和集群的管理工作,保持并维护swarm处于期望的状态,swarm可以有多个manager node,他们会自动协商选举出一个leader执行编排任务;但相反,不能没有manager node;
  • Worker node:接受并执行由manager node派发的任务,并且默认manager node也是一个work node,不过可以将它设置manager-only node,让它负责编排和管理工作;
  • Service:用来定义worker上执行的命令;

注意:在一个Docker Swarm群集中,每台docker服务器的角色可以都是manager,但是,不可以都是worker,也就是说,不可以群龙无首,并且,参与群集的所有主机名,千万不可以冲突。

二、环境准备

部署Docker swarm集群

注意事项:

  • 保证时间同步;
  • 关闭防火墙与SElinux(实验环境);
  • 更改主机名;
  • 编写host文件,保证可以i进行域名解析;

三、初始化Swarm群集

[[email protected] ~]# tail -3 /etc/hosts       
192.168.1.1 node01
192.168.1.2 node02
192.168.1.3 node03
//三台主机都需配置hosts文件实现域名解析的效果
[[email protected] ~]# docker swarm init --advertise-addr 192.168.1.1
//--advertise-addr:指定与其他node通信的地址

命令的返回信息,如图:
部署Docker swarm集群
图中①的命令:以worker身份加入swarm群集中的命令;
②的命令:以manager身份加入swarm群集中的方法;
出现上图表示初始化成功!注意:--token表示期限为24小时;

四、配置node02、node03加入、离开swarm群集

###################node02的操作如下###################
[[email protected] ~]# docker swarm join --token SWMTKN-1-4pc1gjwjrp9h4dny52j58m0lclq88ngovis0w3rinjd05lklu5-ay18vjhwu7w8gsqvct84fv8ic 192.168.1.1:2377
###################node03的操作如下###################
[[email protected] ~]# docker swarm join --token SWMTKN-1-4pc1gjwjrp9h4dny52j58m0lclq88ngovis0w3rinjd05lklu5-ay18vjhwu7w8gsqvct84fv8ic 192.168.1.1:2377
//node02、node03默认是以worker身份加入的
###################node01的操作如下###################
[[email protected] ~]# docker node ls           
//查看节点详细信息(只能是manager身份才可查看)
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
mc3xn4az2r6set3al79nqss7x *   node01              Ready               Active              Leader              18.09.0
olxd9qi9vs5dzes9iicl170ob     node02              Ready               Active                                  18.09.0
i1uee68sxt2puzd5dx3qnm9ck     node03              Ready               Active                                  18.09.0
//可以看出node01、node02、node03的状态为Active
###################node02的操作如下###################
[[email protected] ~]# docker swarm leave
###################node03的操作如下###################
[[email protected] ~]# docker swarm leave
//node02、node03申请离开群集
###################node01的操作如下###################
[[email protected] ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
mc3xn4az2r6set3al79nqss7x *   node01              Ready               Active              Leader              18.09.0
olxd9qi9vs5dzes9iicl170ob     node02              Down                Active                                  18.09.0
i1uee68sxt2puzd5dx3qnm9ck     node03              Down                Active                                  18.09.0
///可以看到node02、node03的状态为Down
[[email protected] ~]# docker node rm node02
[[email protected] ~]# docker node rm node03
//node01将node02、node03移除群集

以上命令可以将某一个节点加入、删除群集,不过加入时是使用worker身份的,如果想要让节点是以manager身份加入群集,需要使用以下命令:

[[email protected] ~]# docker swarm join-token manager 
//查询以manager身份加入群集的命令
[[email protected] ~]# docker swarm join-token worker
//查询以worker身份加入群集的命令

如图:
部署Docker swarm集群

###################node02的操作如下###################
[[email protected] ~]# docker swarm join --token SWMTKN-1-2c0gcpxihwklx466296l5jp6od31pshm04q990n3ssncby3h0c-78rnxee2e990axj0q7td74zod 192.168.1.1:2377
###################node03的操作如下###################
[[email protected] ~]# docker swarm join --token SWMTKN-1-2c0gcpxihwklx466296l5jp6od31pshm04q990n3ssncby3h0c-78rnxee2e990axj0q7td74zod 192.168.1.1:2377
//node02、node03加入群集是以manager身份加入
###################node01的操作如下###################
[[email protected] ~]# docker node ls         //查看节点的详细信息
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
exr8uoww0eih43iujqz5cbv6q *   node01              Ready               Active              Leader              18.09.0
r35f48huyw5hvnkuzatrftj1r     node02              Ready               Active              Reachable           18.09.0
gsg1irl1bywgdsmfawi9rna7p     node03              Ready               Active              Reachable           18.09.0
//从MANAGER STATUS这列就可看出

虽然加入群集时,可以指定使用manager、worker身份,但是也可以通过以下命令,进行降级、升级,操作如下:

[[email protected] ~]# docker node demote node02
[[email protected] ~]# docker node demote node03
//将node02、node03降级为worker
[[email protected] ~]# docker node promote node02
[[email protected] ~]# docker node promote node03
//将node02、node03升级为manager
//自行验证

五、部署图形化UI

部署图形化UI界面由node01来完成!

[[email protected] ~]# docker run -d -p 8080:8080 -e HOST=172.16.0.10 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer dockersamples/visualizer
//-e HOST指定的是容器

使用浏览器访问:
部署Docker swarm集群
浏览器可以正常访问,则表示图形化UI界面部署完成!

六、docker swarm群集的service服务配置

node01发布一个任务,(必须在manager角色的主机上)运行六个容器,命令如下:

[[email protected] ~]# docker service create --replicas 6  --name web -p 80:80 nginx
// --replicas:副本数量;大概可以理解为一个副本就是一个容器

容器运行完成后,可以登录web页面进行查看,如图:
部署Docker swarm集群

注意:如果另外两台节点服务器上没有相应的惊醒,则默认会从docker Hub上自动进行下载!

[[email protected] ~]# docker service ls            //查看创建的service
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
nbfzxltrcbsk        web                 replicated          6/6                 nginx:latest        *:80->80/tcp
[[email protected] ~]# docker service ps web     //查看创建的service都运行在那些容器上
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
v7pmu1waa2ua        web.1               nginx:latest        node01              Running             Running 6 minutes ago                       
l112ggmp7lxn        web.2               nginx:latest        node02              Running             Running 5 minutes ago                       
prw6hyizltmx        web.3               nginx:latest        node03              Running             Running 5 minutes ago                       
vg38mso99cm1        web.4               nginx:latest        node01              Running             Running 6 minutes ago                       
v1mb0mvtz55m        web.5               nginx:latest        node02              Running             Running 5 minutes ago                       
80zq8f8252bj        web.6               nginx:latest        node03              Running             Running 5 minutes ago                       

如果现在node02、node03发生宕机时,service并不会因为节点的当即而死掉,而是自动跑到正常的节点上。

模拟node02宕机,web页面如下:
部署Docker swarm集群

恢复node02,web页面如下:
部署Docker swarm集群

即使node02恢复正常,也不会将service分配给node02。

因此,可以得出一个结论:如果node发生故障,service会自动跑到可用的节点上;反之,如果node没有发生故障,默认情况下,service不会轻易更改节点!

七、实现service的扩容、收缩

扩容:就是添加几台service;
收缩:就是减少几台service;

针对上述环境实现收缩、扩容;

(1)service扩容

[[email protected] ~]# docker service scale web=8
//原本有6个service,现在增加到8台

web页面如下:
部署Docker swarm集群
关于service分配到那台node节点上,是根据docker swarm自身的算法进行分配的。

(2)service收缩

[[email protected] ~]# docker service scale web=4
//原本有8个service,现在减少到4台

web页面如下:
部署Docker swarm集群

(3)设置某个node不运行service

上述环境中,三台都是manager,即使是一台manager、两台worker默认情况manager也是进行工作的,将node02、node03降级为worker,执行如下命令:

[[email protected] ~]# docker node demote node02
[[email protected] ~]# docker node demote node03

如图:
部署Docker swarm集群

可以通过设置,使某台节点不运行service,如下:

[[email protected] ~]# docker node update --availability drain node01
//设置noder01以后不运行容器,但已经运行的容器并不会停止
// --availability:选项后面共有三个选项可配置,如下:
active:工作;pause:暂时不工作;drain:永久性的不工作

web页面如下:
部署Docker swarm集群

[[email protected] ~]# docker node update --availability drain node02
//node02也不参加工作,但已经运行的容器并不会停止

如图:
部署Docker swarm集群

由此可以得出:不是只有manager才有不工作的权力!

八、docker swarm网络

docker swarm集群会产生两种不同类型的流量:

  • 控制和管理层面:包括swarm消息管理等,例如请求加入或离开swarm,这种类型的流量总是被加密的(涉及到集群内部的hostname、ip-address、subnet、gateway等);
  • 应用数据层面:包括容器与客户端的通信等(涉及到 防火墙、端口映射、VIP等);

在swarm中有三个重要的概念:

  • overlay networks:管理swarm中Docker守护进程间的通信。你可以将服务附加到一个或多个已存在的overlay网络上,使得服务与服务之间能够通信;
  • ingress network:是一个特殊的overlay网络,用于服务节点间的负载均衡。当然任何swarm节点在发布的端口上接收到请求后,它将个i请求交给一个名为IPVS的模块。IPVS跟踪参与该服务的所有IP地址,选择其中的一个,并通过ingress网络将请求到它;
  • docker_gwbridge:是一种桥接网络,将overlay网络(包括ingress网络)连接到一个单独的Docker守护进程的物理网络。默认情况下,服务正在运行的每个容器都连接到本地Docker守护进程主机的docker_gwbridge网络;

docker_gwbridge网络在初始化Swarm或加入Swarm时自动创建。大多数情况下,用户不需要自定义配置,但是Docker允许自定义;

查看node01上默认的网络,如图:
部署Docker swarm集群

注意:图中的SCOPE,注意其作用范围!

除了Swarm群集默认创建的两个网络以外,我们还可以自定义创建overlay网络,连接到此网络的容器,即可互相通信,,但是需要注意,自定义的网络只能是创建的manager主机才可查看到!

创建自定义overlay网络

[[email protected] ~]# docker network create -d overlay --subnet 200.0.0.0/24 --gateway 200.0.0.1 --attachable my_net
//Docker swarm群集创建overlay网络时,必须使用--attachable选项来指定名称,否则其他节点的容器运行时无法使用此网络

创建自定义的overlay网络时,必须是manager才可以创建,并且只在manager节点上才显示的,别的worker节点是查看不到的,但是可以使用。
如下:
部署Docker swarm集群

[[email protected] ~]# docker run -itd --name test01 --ip 200.0.0.10 --network my_net busybox
//node02使用刚才自定义的overlay网络创建容器
[[email protected] ~]# docker run -itd --name test02 --network my_net --ip 200.0.0.20 busybox
//node03使用自定义的overlay网络创建容器

测试访问:
部署Docker swarm集群
这是node02、node03已经使用过这个自定义的网络了,这是在node02、node03上就可以查看到了!
部署Docker swarm集群
而且基于docker swarm创建的overlay网络也符合自定义跨主机网络的特点,可以使用主机名进行通信。

九、搭建registry私有仓库

通过搭建registry私有仓库,可以便于让其他node下载镜像。搭建私有仓库可以参考Docker搭建私有仓库

[[email protected] ~]# docker run -itd --name registry -p 5000:5000 -v /registry:/var/lib/registry --restart=always registry:2
[[email protected] ~]# vim /usr/lib/systemd/system/docker.service 
//更改内容为
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000
[[email protected] ~]# systemctl daemon-reload 
[[email protected] ~]# systemctl restart docker
[[email protected] ~]# docker ps -a -q | xargs docker start
//由于刚才创建的容器并没有设置自动启动,所以在重启docker服务的时候,需要手动启动
[[email protected] ~]# ssh-****** -t rsa
[[email protected] ~]# ssh-copy-id [email protected]
[[email protected] ~]# ssh-copy-id [email protected]
//设置免密登录
[[email protected] ~]# scp /usr/lib/systemd/system/docker.service [email protected]:/usr/lib/systemd/system/docker.service
[[email protected] ~]# scp /usr/lib/systemd/system/docker.service [email protected]:/usr/lib/systemd/system/docker.service
//将docker的配置文件复制到node02、node03上,因为docker的配置文件都是一样的内容
[[email protected] ~]# systemctl daemon-reload 
[[email protected] ~]# systemctl restart docker
[[email protected] ~]# systemctl daemon-reload 
[[email protected] ~]# systemctl restart docker
//重新启动node02、node03节点的docker服务
[[email protected] ~]# docker pull httpd
[[email protected] ~]# docker tag httpd:latest 192.168.1.1:5000/httpd:latest
[[email protected] ~]# docker push 192.168.1.1:5000/httpd:latest 
//将httpd镜像上传到私有仓库中

十、service服务版本的升级与回滚

(1)准备环境

[[email protected] ~]# mkdir version{1,2,3,}
[[email protected] ~]# cd version1
[[email protected] version1]# echo "version1" >> index.html
[[email protected] version1]# echo -e "FROM httpd:latest\nADD index.html /usr/local/apache2/htdocs/index.html" > Dockerfile
[[email protected] version1]# docker build -t 192.168.1.1:5000/httpd:v1 .
//version1目录下模拟生成版本v1
[[email protected] version1]# cp Dockerfile ../version2
[[email protected] version1]# cd !$
cd ../version2
[[email protected] version2]# echo "version2" >> index.html
[[email protected] version2]# docker build -t 192.168.1.1:5000/httpd:v2 .
//vesion2目录下模拟生成版本v2
[[email protected] version2]# cp Dockerfile ../version3
[[email protected] version2]# cd !$
cd ../version3
[[email protected] version3]# echo "version3" >> index.html
[[email protected] version3]# docker build -t 192.168.1.1:5000/httpd:v3 .
//vesion3目录下模拟生成版本v3
//注意在主页面做一些区分
[[email protected] ~]# docker push 192.168.1.1:5000/httpd:v1
[[email protected] ~]# docker push 192.168.1.1:5000/httpd:v2
[[email protected] ~]# docker push 192.168.1.1:5000/httpd:v3
//将生成的镜像上传到私有仓库
[[email protected] ~]# docker service create --replicas 3 --name httpd 192.168.1.1:5000/httpd:v1
//基于192.168.1.1:5000/httpd:v1创建三个service副本

浏览器访问测试:
部署Docker swarm集群

三个service副本是轮询的方式来服务的,根据node02、node03的首页内容进行测试!
node02:

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS               NAMES
b6c1d88fcadf        192.168.1.1:5000/httpd:v1   "httpd-foreground"   4 minutes ago       Up 4 minutes        80/tcp              httpd.1.qubzhexjprpt7s89ku91mlle0
[[email protected] ~]# docker exec -it b6c1d88fcadf /bin/bash
[email protected]:/usr/local/apache2# echo "node02" >> htdocs/index.html 

node03

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS               NAMES
ee19c342188c        192.168.1.1:5000/httpd:v1   "httpd-foreground"   5 minutes ago       Up 5 minutes        80/tcp              httpd.3.9ru7zsokixz29iw99qbdp15gn
[[email protected] ~]# docker exec -it ee19c342188c /bin/bash
[email protected]:/usr/local/apache2# echo "node03" >> htdocs/index.html 

访问测试:

[[email protected] ~]# curl 127.0.0.1
version1
node03
[[email protected] ~]# curl 127.0.0.1
version1
[[email protected] ~]# curl 127.0.0.1
version1
node02
//效果已经实现 

(2)版本升级

[[email protected] ~]# docker service update --image 192.168.1.1:5000/httpd:v2 httpd
//更新容器的镜像为版本2

浏览器进行测试:
部署Docker swarm集群

默认情况下,swarm一次只更新一个副本,并且两个副本之间并没有等待时间,可以通过以上方法进行设置。

[[email protected] ~]# docker service update --replicas 6 --image 192.168.1.1:5000/httpd:v3 --update-parallelism 2 --update-delay 1m httpd
//--update-parallelism:设置更新的副本数量;
//--update-delay:更新的间隔时间
// --replicas 6:并在升级的过程中另外再创建3个副本

从更新的过程中可以看出效果!

浏览器确认版本更新成功:
部署Docker swarm集群

(3)版本回滚

[[email protected] ~]# docker service rollback httpd
//回滚为上一个版本

浏览器访问测试:
部署Docker swarm集群

注意:当我们执行回滚操作的时候,默认是回滚到上一次操作的版本,并且不可以连续回滚。

十一、docker Swarm群集常用命令

[[email protected] ~]# docker swarm leave 
//那个节点想推出swarm群集,就在那台节点上执行这条命令
//节点自动退出swarm群集(相当于辞职)
[[email protected] ~]# docker node rm 节点名称
//由manager主动删除节点(相当于开除)
[[email protected] ~]# docker node promote 节点名称
//将节点升级
[[email protected] ~]# docker node demote 节点名称
//将节点降级
[[email protected] ~]# docker node ls          
//查看swarm群集的信息(只可以在manager角色的主机上查看)
 [[email protected] ~]# docker node update --availability drain 节点名称
 //调整节点不参加工作
 [[email protected] ~]# docker swarm join-token worker
//查看加入swarm群集的令牌(可以是worker也可以是manager)
[[email protected] ~]# docker service scale web=4
//扩容、收缩swarn群集servie的数量(取决与群集原本的数量)
//比原本群集数量多,就是扩容,反之、收缩
[[email protected] ~]# docker service ls
//查看创建的service
[[email protected] ~]# docker service ps service的名称
//查看创建的service运行在那些容器上
[[email protected] ~]# docker service create --replicas 6  --name web -p 80:80 nginx
//指定运行的service副本数量
[[email protected] ~]# docker service create --replicas 3 --constraint node.hostname==node03 --name test nginx
//指定node节点,创建名为test的容器
[[email protected] ~]# docker node update --label-add mem=max node02
//以键值对的方式给docker02主机打上标签“mem=max”,等号两边的内容是可以自定义的
[[email protected] ~]# docker service create --name test1 --replicas 3 --constraint 'node.labels.mem==max' nginx
//基于nginx镜像在标签为“mem==max”的主机上运行3个名为test1的服务
[[email protected] ~]# docker node inspect node02
//标签相关的信息,在Spec{  }中有显示

十二、docker swarm总结

  • 参与群集的主机名一定不能冲突,并且可以互相解析对方的主机名;
  • 集群内的所有节点可以都是manager角色,但是不可以都是worker角色;
    当指定运行的镜像时,如果群集中的节点本地没有该镜像,那么它将会自动下载对应的镜像;
  • 当群集正常工作时,若一个运行着容器的docker服务器发生宕机,那么,其所运行的所有容器,都将转移到其他正常运行的节点之上,而且,就算发生宕机的服务器恢复正常运行,也不会再接管之前运行的容器;

————————————本文到此结束,感谢阅读——————————

版权声明:本文为weixin_45186298原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45186298/article/details/103745844

智能推荐

Thread.join()方法的使用

如果一个线程A执行了thread.join()语句,代表当前线程A等待thread线程终止后才从thread.join()方法返回 并且这个方法具有超时特性,可以添加参数设置 输出结果: jdk中Thread.join()方法的源码(进行了部门调整)   每个线程终止的条件是前驱线程的终止,每个线程等待前驱线程终止后,才从join()方法返回,  当线程终止时,会调用自身的no...

linux服务器部署jenkins笔记

安装jenkins参考文档:https://blog.csdn.net/tomatocc/article/details/83930714 1. 打开jenkins官网:https://jenkins.io/download/ 将war包下载到本地 **ps:**这里要注意的是要下载左边下方的war包,不要下载右边下面的war包。左边是稳定版本,右边是最新版本,建议大家使用稳定版本(我刚开始下载的...

k8s部署elasticsearch集群

百度营销大学     环境准备 我们使用的k8s和ceph环境见: https://blog.51cto.com/leejia/2495558 https://blog.51cto.com/leejia/2499684 ECK简介 Elastic Cloud on Kubernetes,这是一款基于 Kubernetes Operator 模式的新型编排产品,用户可使用该产品在...

saas-export项目-AdminLTE介绍与入门

AdminLTE介绍 (1)AdminLTE是什么? AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具 (2)AdminLTE有什么特点? 提供一系列响应的、可重复使用的组件, 并内置了多个模板页面 自适应多种屏幕分辨率,兼容PC和移动端 快速的创建一个响应式的Html5网站 AdminLTE 不但美观, 而且可以免去写很大CSS与JS的工作量 AdminLTE...

MyBatis中ResultMap结果集映射

用于解决属性名和字段名不一致的情况: resultMap 元素是 MyBatis 中最重要最强大的元素。...

猜你喜欢

编写一个shell

编写shell的过程: 1.从标准输入中读入一个字符串。 2.解析字符串 3.创建一个子进程的执行程序。 4.子进程程序替换。 5.父进程等待子进程退出。...

WEB自动化测试中Xpath定位方法

前言: Xpath是在XML文档中查找信息的一种语言,使用路径表达式来选取XML文档中的节点或节点集,由于XML与HTML结构类似(前者用于传输数据,后者用于显示数据),所以Xpath也常用于查找HTML文档中的节点或节点集。 一  路径表达式: 路径以“/”开始     表示找到满足该绝对路径的元素; 路径以//”开始  ...

力扣困难难度 第4题 寻找两个正序数组的中位数

先看一眼题 我的思路: 设置下标i,j分别用于遍历两个数组,初始值均为0,直到找到两个数组中从小到大的第第length/2个数为止结束循环,length为两个数组长度之和。 ·每次比较nums[i]nums[j],如果前者小则i++,否则j++ ·循环结束时,如果count已经达到length/2,则说明已经找到了中位数,[注意:此时有可能正好其中一个数组遍历完了!所以...

[国家集训队]小Z的袜子(莫队)

[国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这NN只袜子从1到NN编号,然后从编号LL到RR(LL 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同...

服务器配置(五) 服务器使用tomcat配置https全过程

一.了解服务器配置https协议 HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 配置HTTPS就需要证书,证书通过权威的CA机构付费获得的证书才能被互联网承认,我们将其放在服务器上面,配置好后,就可以进行https通信了。 通过https访问的网站,在地址前可以看到安全两个字,点击可以查...