irpas技术客

五阶段大纲_李鲤驴。

irpas 710

文章目录 随堂笔记笔记乱码问题课程安排(17到18天)Spring Cloud Netflixeureka高可用04调用02、03Zuul API 网关Hystrix dashboardVMware离线安装 Docker配置中心RabbitmqBus 配置刷新链路跟踪向注册中心注册时,选择正确网卡,注册ip地址订单流量削峰分布式事务搭建业务案例全局唯一id发号器订单远程调用 storage, account, easy-idSeata AT 事务TCC 事务可靠消息最终一致性事务 Rocketmq 可靠消息最终一致性事务DockerElasticsearchSpring Data Elasticsearch拼多商城商品搜索 KubernetesK8s 部署 Springcloud1 微服务模块

随堂笔记

这是随堂笔记, 详细内容请参考在线笔记: https://blog.csdn.net/weixin_38305440

笔记乱码问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2jj7DWoR-1636982358216)(note.assets/image-20200613174552258.png)]

课程安排(17到18天) Spring Cloud Netflix(6)RabbitMQ(2)分布式事务(3)RocketMQ(1)Docker(2)ElasticsearchKubernetes(3) Spring Cloud Netflix 注册中心 NacosEureka 配置中心 NacosSpring Cloud Config 远程调用、负载均衡 Feign、Ribbon 系统容错、限流 SentinelHystrix API网关 Spring Cloud GatewayZuul 数据监控 SentinelHystrix Dashboard+Turbine链路跟踪监控:Sleuth+Zipkin eureka

服务的注册和发现

搭建eureka注册中心服务器

新建 module: sp05-eureka调整pom.xml 父项目添加 eureka server 依赖 yml 关闭自我保护模式主机名针对单台服务器,不向自己注册,不从自己拉取 启动类注解:@EnableEurekaServer 触发 eureka 服务器的自动配置

eureka四条运行机制

客户端启动时,会反复连接注册中心尝试注册,直到注册成功为止客户端每30秒发送一次心跳数据,服务器连续3次收不到一个服务的心跳,会删除它的注册信息客户端每30秒拉取一次注册表,刷新本地注册表缓存自我保护模式 由于网络中断,15分钟内,85%服务器出现心跳异常,自动进入保护模式, 自我保护模式下所有的注册信息都不删除网络恢复后,自动退出保护模式开发调试期间,可以关闭保护模式,避免影响调试

客户端连接 eureka 注册中心

修改 2,3,4 项目

添加 eureka client 依赖

yml

eureka连接地址: http://eureka1:2001/eureka

高可用

02商品服务

右键点击02的启动配置 或者点上面的启动配置下拉菜单 选择 “Edit Configuration”对02创建两个启动配置,设置启动参数--server.port=xxxx

05eureka注册中心

04调用02、03 在 04 的 pom.xml 添加依赖: openfeign启动类添加注解:@EnableFeignClients 触发Feign的自动配置定义远程调用接口: ItemClientUserClient OrderServiceImpl,实现远程调用

Feign 集成 Ribbon 负载均衡和重试

Feign集成Ribbon,默认实现了负载均衡和重试

Ribbon的重试

远程调用失败,可以自动发起重试调用

异常服务器宕机后台服务阻塞超时

重试参数:

MaxAutoRetries - 单台服务器的重试次数,模式0MaxAutoRetriesNextServer - 更换服务器的次数,默认1ReadTimeout - 等待响应的超时时间,默认1000OkToRetryOnAllOperations - 是否对所有类型请求都重试,默认只对GET请求重试ConnectTimeout - 与后台服务器建立连接的等待超时时间,默认1000 Zuul API 网关 统一的访问入口统一的权限校验集成 Ribbon 负载均衡和重试集成 Hystrix 容错和限流

统一的访问入口

新建模块: sp06-zuul

添加依赖:

eureka clientzuulsp01

yml 配置路由转发规则

# **包含深层路径 # * 只包含一层路径 # 服务id设置成访问子路径,是默认规则, # zuul根据注册表的注册信息完成自动配置 # 最好手动配置,防止注册表不全 zuul: routes: item-service: /item-service/** user-service: /user-service/** order-service: /order-service/**

启动类添加注解 @EnableZuulProxy

zuul统一权限校验

http://localhost:3001/item-service/t45t4 没有登录不能访问

http://localhost:3001/item-service/t45t4?token=65345rt 已经登录过,可以访问

新建 ZuulFilter 子类按 zuul 的规则实现添加 @Component 注解

zuul 的自动配置类可以在 spring 容器中自动发现过滤器实例,完成自动配置

zuul集成Ribbon

默认启用了负载均衡

默认没有启用重试

在入口位置进行重试,会造成后台大面积服务压力翻倍,可能造成故障传播、雪崩

zuul启用重试(不推荐)

添加 spring-retry 依赖yml配置 zuul.retryable=true配置重试参数(可选)

zuul集成 Hystrix

Hystrix是容错和限流工具

容错 – 降级

调用后台服务出错(异常,阻塞,服务崩溃),可以执行当前服务的一段代码,直接向客户端返回降级结果

错误提示缓存的结果根据业务逻辑,返回任意的结果

添加 Hystrix 降级

Zuul默认已经启用 Hystrix实现 FallbackProvider 接口,按zuul的规则实现接口的方法添加 @Component

Hystrix 限流 - 熔断

当流量过大,造成后台服务故障,可以断开链路,限制后台服务的访问流量,等待后台服务恢复断路器打开的条件 10秒20次请求(必须首先满足)50%出错,执行降级代码 半开状态 断路器打开一段时间后,会进入半开状态会尝试发送一次客户端调用, 成功,关闭断路器,恢复正常失败,继续保持打开状态 Hystrix dashboard

Hystrix数据监控仪表盘

Hystrix日志,是通过 Actuator 工具来暴露出来

Actuator

springboot 提供的一个项目指标工具,可以通过Actuator获取项目的各种日志数据

健康状态

spring容器中所有的对象

spring mvc映射的所有路径

jvm堆内存镜像

添加 Actuator

添加 actuator 依赖

暴露监控日志

m.e.w.e.i= "*" 暴露所有日志 m.e.w.e.i= health 暴露健康状态日志 m.e.w.e.i= health,beans,mappings,hystrix.stream 暴露多种日志

查看日志

http://localhost:3001/actuator

搭建 Hystrix dashboard

新建模块: sp07-hystrix-dashboard

添加依赖: Hystrix dashboard

yml配置

允许抓取的服务器列表: localhost

启动类添加注解: @EnableHystrixDashboard

访问 http://localhost:4001/hystrix

Turbine

聚合多台服务器的日志数据,提供给仪表盘显示

新建模块: sp08-turbine

添加依赖

eureka clientturbine

yml

聚合的服务: zuul 为聚合的日志数据命名:new String("default")

启动类注解:@EnableTurbine

合并的日志地址: http://localhost:5001/turbine.stream

VMware

VMware 版本: 16+

NAT网络网段使用 64 网段

编辑 – 虚拟网络编辑器 – 选择 vmnet8 – 左下角修改:192.168.64.0

虚拟机镜像

课前资料\虚拟机\ centos-7-1908.zipcentos-8-2105.zip 已经做了几步基础设置: yum源和扩展源,使用阿里镜像安装了工具: python、pip、ansible方便设置ip地址的脚本: ip-static 设置固定ipip-dhcp 自动获取ip

加载虚拟机

解压缩 centos-8-2105.zip双击 centos-8-2105.vmx 加载镜像启动虚拟机,按提示选择“已复制虚拟机”用户名密码都是 root

网卡不可用

# centos 7 禁用 NetworkManager 系统服务 systemctl stop NetworkManager systemctl disable NetworkManager # centos 8 开启 VMware 托管 nmcli n on systemctl restart NetworkManager # 还原 VMware 虚拟网络 # VMware 虚拟网络不稳定,经常出现故障 # 编辑 -- 虚拟网络编辑器 -- 左下角按钮“还原默认设置” -- 设置 VMnet8 的 64 网段 # 会删除所有虚拟网络,重新创建 离线安装 Docker

上传离线文件到 /root/

\DevOps课前资料\docker\docker-install 文件夹

参考笔记,从第三步开始安装

https://wanght.blog.csdn.net/article/details/117327543

配置中心

准备 Git 仓库

把 2,3,4 三个项目的配置文件,存放到git仓库

在 springcloud1 下新建文件夹: config把 2,3,4 三个项目的配置文件,复制到 config 目录 item-service-dev.ymluser-service-dev.ymlorder-service-dev.yml 添加 override-none=true 防止配置中心的配置,覆盖本地命令参数(有仓库的同学不用重复创建) VCS – create git repository 或 double shift,搜索 create git repository选择 springcloud1 工程目录作为仓库目录commit 提交本地仓库,ctrl+k,右上角对勾按钮,double shift搜索commit选择所有文件,填写提交信息,提交 (有仓库的同学不用重复创建) 在 gitee 点右上角加号新建仓库 仓库名称: springcloud1设置开源项 ctrl+shift+k,右上角向上箭头按钮,double shift搜索pushpush界面,点击 define remore 连接,填写远程仓库地址,完成推送

搭建配置中心服务器

新建模块: sp09-config

添加依赖

eureka clientconfig server

yml

仓库的地址

存放配置文件的文件夹路径

之后测试如果有问题,果断换仓库

https://gitee.com/xyxyxyxyx/springcolud01 config

启动类注解: @EnalbleConfigServer

确认配置中心服务器是否正确

http://eureka1:2001/ 检查是否有 config-server 的注册信息访问配置中心的配置文件 http://localhost:6001/item-service/devhttp://localhost:6001/user-service/devhttp://localhost:6001/order-service/dev

配置中心的客户端

把 2,3,4 的配置文件全部注释掉添加依赖: config client新建配置文件: bootstrap.yml添加配置: eureka地址指定配置中心的服务id:CONFIG-SERVER指定下载的配置文件和 profile

确认

启动控制台中,要看到连接 6001 的日志 Rabbitmq

消息队列、消息服务、消息中间件、Broker

RabbitmqActivemqRocketmq 阿里KafkaTubemq 腾讯

搭建Rabbitmq服务器

克隆 docker-base: rabbitmq

设置ip

./ip-static ip: 192.168.64.140 ifconfig

下载 rabbitmq 镜像

docker pull rabbitmq:management 或者从 code 下载 rabbit-image.gz 上传到服务器,然后执行镜像导入 docker load -i rabbit-image.gz

启动rabbitmq容器

关闭防火墙 systemctl stop firewalld systemctl disable firewalld 重启 docker 系统服务 systemctl restart docker mkdir /etc/rabbitmq vim /etc/rabbitmq/rabbitmq.conf # 添加两行配置: default_user = admin default_pass = admin docker run -d --name rabbit \ -p 5672:5672 \ -p 15672:15672 \ -v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \ -e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf \ rabbitmq:management 访问管理控制台 http://192.168.64.140:15672 用户名密码是 admin Bus 配置刷新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9QZmjYg-1636982358218)(note.assets/image-20211022163759194.png)]

修改 2,3,4,9 添加依赖

BusRabbitmqbinder-rabbit

09添加依赖: actuator

09的yml配置:

暴露 bus-refresh:

m.e.w.e.i=bus-refresh

rabbitmq连接

修改 2,3,4 的yml 配置,修改 config 目录的三个文件并提交

rabbitmq连接

启动项目测试

启动5,耐心等待完全启动完成启动9,耐心等待完全启动完成--------- http://eureka1:2001 注册表中存在 config-server http://localhost:6001/item-service/dev http://localhost:6001/user-service/dev http://localhost:6001/order-service/dev启动 2,3启动 4--------- 查看 2,3,4 的控制台,要看到连接 6001启动6--------- http://localhost:6001/actuator 这里面要看到 bus-refresh使用 postman 向 http://localhost:6001/actuator/bus-refresh 提交 post 请求观察 2,3,4 的控制台,要看到重新连接 6001 刷新配置的日志

把刷新到的配置信息,重新注入到对象中

@RefreshScope

在需要重新注入配置数据的对象上添加这个注解,刷新的配置才能重新注入到对象中;

如果加这个注解,即使刷新到新配置,也不会重新向对象注入

链路跟踪

sleuth

产生链路跟踪日志

zipkin

日志的可视化

sleuth

A --> B --> C --> D

A, U5HG4HG456UYU, U5HG4HG456UYU, true

B, U5HG4HG456UYU, O7IUYH45TY34Y45, true

C, U5HG4HG456UYU, U56YU4Y344U456, true

D, U5HG4HG456UYU, 34T345Y456U56U5, true

修改 2,3,4,6 添加 sleuth 产生链路跟踪日志

只需要添加 sleuth 依赖sleuth 是自动配置,不需要添加任何其他配置

2,3,4,6 向rabbitmq 发送日志数据

添加 zipkin 客户端依赖在 06 添加 rabbitmq 依赖yml 配置发送方式: rabbit修改 06的yml,添加 rabbitmq 连接配置

起动zipkin服务器

# 使用 140 服务器,没有 virtual host java -jar zipkin-server-2.23.4-exec.jar -- zipkin.collector.rabbitmq.uri=amqp://admin:admin@192.168.64.140:5672 # 使用 140 服务器,有 virtual host java -jar zipkin-server-2.23.4-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:admin@192.168.64.140:5672/vh0 # 使用我的服务器,有 virtual host java -jar zipkin-server-2.23.4-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:admin@wht6.cn:5672/vh0 向注册中心注册时,选择正确网卡,注册ip地址

选择正确网卡

bootstrap.yml

spring: cloud: inetutils: ignored-interfaces: # 忽略的网卡 - VM.* preferred-networks: # 要是用的网卡的网段 - 192\.168\.0\..+

注册ip地址,而不注册主机名

application.yml

eureka: instance: prefer-ip-address: true # 使用ip进行注册 instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} # ip:服务id:端口 订单流量削峰

导入项目

课前资料\elasticsearch\pd-商城项目案例.zip 压缩文件\pd\pd-web 文件夹,解压到 rabbitmq 工程目录pd-web\pom.xml 鼠标拖拽到 idea,springboot 版本改成 2.3.2.RELEASEpom.xml编辑器中,右键–add as maven project, 导入 pd-web 模块

导入数据库

sqlyog, 右键点连接, 从 sql 转储文件导入,选择 pd-web 目录中的 pd.sql

如果导入失败,可以增大 mysql 缓存大小

如果导入失败,可以增大 mysql 缓存区 set global max_allowed_packet=100000000; set global net_buffer_length=100000; SET GLOBAL interactive_timeout=28800000; SET GLOBAL wait_timeout=28800000

启动项目测试

application.yml

修改数据库连接的密码

右键点击 RunPDApp — run

修改启动配置,working directory 设置成 pd-web 模块文件夹的路径

重启项目

访问 http://localhost

测试现有订单系统

删除数据库中的所有注册用户和订单

delete from pd_user; delete from pd_order; delete from pd_order_item;

点右上角,登录,注册新用户

右上角地址管理,填写收货地址

下订单

生成订单的代码

OrderController.submitOrder()OrderServiceImpl.saveOrder()

向 Rabbitmq 发送订单

pom.xml 添加 rabbitmq 依赖yml添加rabbitmq连接在启动类,或者添加自动配置类 给出使用的队列参数: orderQueue,true,false,false修改 OrderServiceImpl,使用 AmqpTemplate 工具类,向 orderQueue队列 发送订单消息

消费者接收订单,存储到数据库

新建OrderConsumer 消费者类通过注解配置来接收订单消息收到的订单,直接调用业务方法 saveOrder() 保存到数据库调整 OrderServiceImpl 分布式事务 搭建业务案例

数据库初始化工具

执行多次测试后,库存和账户金额都会减少,可以执行初始化工具,把数据重置到初始状态,再重新测试

新建空工程: seata-at新建spring模块: db-init添加依赖: spring jdbc,mysql driveryml 配置数据库连接在 resources 目录创建四个 sql 脚本文件 新建sql子目录,在sql 目录下创建文件 启动类中添加代码,执行这四个 sql 脚本

mysql 旧版本,需要调整sql脚本

四个文件中的 DATETIME(6),把小括号6去掉,改成DATETIMEorder.sql 最后一行,两个 NOW() 改成 0

三个业务模块

新建 spring 模块调整 pom.xml,从 order-parent 继承yml配置 app.nameport注册中心jdbc连接信息mybatis-plus显示 mapper 执行的sql语句日志bootstrap.yml 选择网卡 实体类Mapper启动类添加注解:@MapperScanServiceController 全局唯一id发号器

分布式系统中,多个模块可以从发号器获得不重复的id

https://github.com/lookingatstarts/easyIdGenerator

这个开源项目支持两种产生id的算法:

雪花算法使用数据库产生不重复id 订单远程调用 storage, account, easy-id 父项目中已经添加 feign 依赖启动类添加注解:@EnableFeignClients添加三个远程调用接口 EasyIdClientStorageClientAccountClient OrderServiceImpl 完成远程调用禁用 Ribbon 重试,避免干扰观察分布式事务执行效果 Seata AT 事务

部署 seata server (TC 事务协调器)

课前资料\分布式事务\seata-server-1.3.zip 解压缩修改三个配置文件 registry.conf – 向注册中心注册file.conf – 协调器运行过程中记录的日志数据,要存到数据库seata-server.bat – 使用的内存默认 2G,测试环境把内存改小:256m 执行 seata-server.bat 启动协调器 必须用 jdk 1.8不能关闭命令行窗口窗口中的内容不能选中,如果选中,窗口中的应用会挂起(暂停)

订单模块添加 Seata AT 事务

父项目中添加 seata 依赖order中配置三个配置文件 application.yml – 事务组的组名registry.conf – 注册中心的地址file.conf – 上面的事务组,使用哪个协调器 新建自动配置类,创建 DatasourceProxy 数据源代理对象 AT事务的自动事务处理代码,都是有数据源代理提供的 禁用 spring 默认的数据源配置在业务方法上添加事务注解 spring 本地事务 @Transactionalseata 启动全局事务 @GlobalTransactional (只在第一个模块上添加) TCC 事务

有侵入的事务方案

事务控制代码需要自己编写业务代码也需要修改底层数据库表结构也要修改

AT事务适用于 80% 业务场景,在一些复杂情况下,自动事务无法自动处理,就需要手动处理事务

TCC - 两个阶段的三个操作

第一阶段 Try - 预留资源、冻结数据 第二阶段 Confirm - 确认资源,使用冻结数据完成业务处理Cancel - 取消预留的资源,把之前冻结的数据回滚(解冻、恢复)回去

新建工程,导入无事务版本

新建 empty 工程: seata-tcc无事务版本的 4 个文件夹,解压缩到工程目录导入 project structure 中添加 moduledouble shift 搜索 add maven project拖拽 pom.xml ,右键 add as maven project

添加 TCC 事务

添加 seata 依赖三个配置文件 application.yml – 事务组registry.conf – 注册中心地址file.conf – 事务组对应协调器 修改Mapper,添加 TCC 数据库操作按照 seata tcc 的实现规则,定义 TccAction 接口和实现 添加三个方法,实现 TCC 三个操作三个方法都添加 @Transactional 注解,控制本地事务 修改业务方法,调用 TccAction 的第一阶段方法第二阶段的方法,由 seata 的 RM 组件自动调用在第一个模块,添加 @Globaltransactional 启动全局事务 第一阶段,冻结数据失败,二阶段回滚也会执行二阶段失败,TC会重复发送二阶段指令,模块会重复执行二阶段操作

幂等性控制

让多次重复的操作,和一次操作的结果相同

第一阶段成功,设置一个“一阶段成功标记”;失败就没有标记

二阶段执行前,先检查标记是否存在,如果存在执行第二阶段操作

二级段执行完成后,删除标记

可靠消息最终一致性事务

Rocketmq 提供了事务消息、高可靠消息

搭建Rocketmq服务器

克隆 centos-8-2105: rocketmq

设置ip

./ip-static ip: 192.168.64.141 ifconfig

上传文件到 /root/

课前资料\分布式事务\rocketmq\ 目录中的三个文件

后面安装参考 csdn 笔记

Rocketmq 可靠消息最终一致性事务

导入项目

seata-at/无事务版本.zip, 解压到 rocketmq-dtx 工程目录导入 工程模块管理中,添加模块double shift,搜索 add maven project拖拽pom.xml到 idea,右键 add as maven project

订单使用事务消息,异步调用账户

订单添加事务消息

父项目添加 spring Rocketmq 依赖yml 配置 rocketmq 连接和生产者组名添加新的数据表 tx_table,用来存储事务执行状态添加实体类 TxInfo 和 TxMapper新建 AccountMessage,用来封装发给账户的调用信息: userId, money, txId工具类:JsonUtilOrderServiceImpl 发送事务消息实现事务监听器

账户接收消息,扣减账户

依赖yml配置 name serverAccountMessageJsonUtil新建消费者类: AccountConsumer,实现消费者接口通过注解配置接收消息扣减账户 Docker

准备docker服务器

克隆 docker-base: docker

设置ip

./ip-static ip: 192.168.64.150 ifconfig

上传文件到 /root/

docker-images.gztomcat 文件夹

导入镜像:

docker load -i docker-images.gz docker images

用 tomcat:10 运行 helloworld web应用

1. 准备 jsp 文件 mkdir /opt/web vim /opt/web/index.jsp 添加内容: <h1>Hello wolrd!</h1> <h1>Hello ${param.name}!</h1> 2. 启动 tomcat:10 容器 docker run -d --name web \ --restart=always \ -p 80:8080 \ -v /opt/web:/usr/local/apache-tomcat-10.0.6/webapps/ROOT \ tomcat:10 3. 访问 http://192.168.64.150 、 http://192.168.64.150/?name=zhangsan Elasticsearch

全文检索引擎服务器

克隆 docker-base: es

设置ip

./ip-static ip: 192.168.64.181 ifconfig

上传文件到 /root/

pditems 文件夹elasticsearch-analysis-ik-7.9.3.zipes-img.gz

导入镜像:

docker load -i es-img.gz

增加服务器内存到 2G 或以上

修改 Linux 底层系统参数

echo 'vm.max_map_count=262144' >>/etc/sysctl.conf

关闭防火墙

# 关闭防火墙 systemctl stop firewalld.service # 禁用防火墙 systemctl disable firewalld.service

重启服务器 shutdown -r now

检查底层系统参数是否添加正确 vim /etc/sysctl.conf

按照笔记,启动 es 三个节点的容器

准备虚拟网络和挂载目录启动 Elasticsearch 集群 Spring Data Elasticsearch

Criteria 数据查询

Criteria - 封装搜索条件CriteriaQuery - 封装上面的条件对象、分页参数ElasticsearchOperations - 用来执行查询的工具

分页

Pageable - 向服务器提交的分页参数,page、size

Page - 从服务器返回的一页数据,数据列表、分页信息(可选,可以直接使用 List<…>)

Repository

Page<Student> findByName(String key, Pageable pageable);

Criteria

Criteria c = ... CriteriaQuery q = new CriteriaQuery(c); q.setPageable(pageable); .... 拼多商城商品搜索 添加 spring data es 依赖yml 配置 es 服务器地址新建实体类 Item,封装从 es 搜索的数据新建 ItemRepository 接口添加搜索方法: findByTitleOrSellPoint()SearchServiceSearchControllersearch.jsp Kubernetes

容器自动管理工具、持续部署工具

谷歌的开源工具,开源之前在谷歌内部使用了几年的时间,管理上千万的容器

安装搭建 Kubernetes 集群

安装过程非常复杂,即使对专业运维难度也非常大,有开源工具辅助安装K8s集群

一键安装:https://github.com/easzlab/kubeasz一步步手动安装:https://github.com/opsnull/follow-me-install-kubernetes-cluster

第一台服务器

克隆 centos-8-2105: k1

设置ip

./ip-static ip: 192.168.64.191 ifconfig

kubeasz-3.1.0.zip 解压缩

上传文件

images.gz 上传到 /root/kubeasz-3.1.0/ezdown 上传到 /root/kubeasz-3.1.0/kubeasz 文件夹上传到 /etc/

内存设置 2G 或 2G 以上

cpu 设置成两块

重启服务器

准备安装环境

cd ~/ chmod +x ./ezdown # 1.下载离线安装文件,如果存在,不会重复下载 # 2.安装Docker ./ezdown -D docker info docker load -i images.gz docker images

克隆 k1,克隆出 k2 和 k3

k1先关机

方案1,从 k1 克隆出 k2 和 k3

方法2,从 k1 只克隆一个 k2

修改 k2 和 k3 的 ip

192.168.64.192192.168.64.193

191继续配置安装环境

cd ~/ ./ezdown -S sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/kubeasz/example/config.yml # 生成公钥和私钥 ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa # 公钥复制到三台主机,包括自己 ssh-copy-id 192.168.64.191 ssh-copy-id 192.168.64.192 ssh-copy-id 192.168.64.193 # 使用离线安装工具,新建集群安装方案 cd /etc/kubeasz chmod +x ezctl ./ezctl new cs1

修改集群方案 cs1 的配置文件 hosts

三台服务器都拍摄快照,如果集群安装失败,可以回退到快照重新安装

可能出错的情况 漏做某一步hosts 文件修改错误内存不足引起安装失败 可以释放更多内存、加大虚拟机内存

执行一键安装脚本

cd /etc/kubeasz ./ezctl setup cs1 all

Kubernetes 的三个核心对象

Pod

Pod是K8s的容器, 是 K8s 对 Docker 容器的封装对象,

一个 Pod 可以封装多个 Docker 容器,

Pod是对底层容器化技术的解耦工具,底层容器可以使用 Docker 或 Containerd

控制器

控制容器的自动部署和自动销毁

Service

提供一个不变的访问入口,Service可以向所有容器以负载均衡的方式,转发调用

K8s 部署 Springcloud1 微服务模块

构建镜像

上传文件到 /root/

DevOps课前资料\kubernetes\k8s案例\v2\ 目录中的 5 个文件夹

构建镜像

cd ~/ docker build -t centos7-jdk8:v1 jdk/ docker build -t sp-eureka:v1 eureka/ docker build -t sp-item:v1 item/ docker build -t sp-user:v1 user/ docker build -t sp-order:v1 order/ 查看镜像列表 docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnRGS1xN-1636982358220)(note.assets/image-20211110115009868.png)]


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #五阶段大纲 #Cloud #API #网关Hystrix