微服务基础环境搭建-centos7

文章目录

1、安装docker

1.1、安装步骤

  1. 卸载旧版本docker
shell 复制代码
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  1. 安装工具包
shell 复制代码
yum install -y yum-utils
  1. 设置镜像仓库
  • 推荐使⽤国内阿⾥云的仓库
shell 复制代码
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
shell 复制代码
yum makecache fast
shell 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 安装docker
shell 复制代码
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 检查docker是否安装成功
docker version
# 启动docker服务
systemctl start docker
# 查看docker服务状态
systemctl status docker
  1. 跑一个hello-world
shell 复制代码
docker run hello-world

1.2、docker常用命令

shell 复制代码
# 帮助命令
docker version # docker版本
docker info # docker系统信息
docker xxx --help #查看帮助
# 镜像操作
docker images # docker image ls
docker search xxx # 搜索镜像
docker pull xxx # 下载镜像 docker image pull
docker inspect xxx # 查看镜像信息
docker run -d --name myxxx -p 80:80 xxx # 启动镜像
docker ps # 查看镜像执⾏情况
docker exec -it {container_id} /bin/bash
docker rmi 镜像ID # 删除镜像
docker image rm -f $(docker image ls -q) #删除所有镜像
# 容器操作
docker ps
docker container ls -a #查询所有容器
docker rm $(docker ps -aq) #删除所有容器

2、安装Nginx

shell 复制代码
# 搜索镜像
docker search nginx
# 下载安装
docker pull nginx
# 启动镜像
docker run -d --name mynginx -p 80:80 nginx

3、Docker安装Mysql

dockerhub参考地址: https://hub.docker.com/_/mysql

需要特别注意的是,对于镜像中需要持久化保存的⽂件,需要通过-v挂载到宿主机上,这样这些⽂件才不会随

着容器关闭⽽消失。

对于MySQL,需要将他的⽇志⽂件、数据⽂件和配置⽂件挂载到宿主机上

shell 复制代码
# 拉取镜像
docker pull mysql:8
# 启动mysql并配置⼯作⽬录。将容器中的⼯作⽬录挂载到本机,这样这些数据⽂件才能持久化保存。
docker run -p 3306:3306 --name mysql8 -v /app/docker/mysql/log:/var/log/mysql -v /app/docker/mysql/data:/var/lib/mysql -v /app/docker/mysql/conf:/etc/mysql -v /app/docker/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root -d mysql:8
# MySQL默认只能在本机登录,也就是只能从容器内登录。需要调整权限,允许远程访问。
docker container ls #获取容器ID
# 进⼊容器
docker exec -it e6b5762cb698 /bin/bash
# 在容器内登录MySQL 。 不要输密码  
mysql -u root
# 调整MySQL,允许远程连接
mysql> use mysql;
mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
mysql> update user set host='%' where user='root';
mysql> ALTER user 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
mysql> flush privileges;
# 如果都正常执⾏,那么MySQL服务就可以⽤客户端⼯具远程登录了

4、Docker安装Redis

需要注意将Redis的配置⽂件和⽇志⽂件挂载到宿主机上。

shell 复制代码
docker pull redis:latest
# 将Redis的配置⽂件和数据⽂件挂载到宿主机上
docker run -p 6388:6379 --name redis -v /app/docker/redis/config:/etc/redis.conf -v /app/docker/redis/data:/app/redis -d redis redis-server /etc/redis.conf
# 如果正常执⾏,那么Redis的服务就可以⽤客户端⼯具远程登录了。

5、安装Nacos

5.1、Nacos的作用

  • 服务注册中心
  • 配置中心

5.2、单体服务安装

下载⻚⾯: https://nacos.io/download/nacos-server/ 。 这次选择下载2.2.0版本

安装Nacos之前,需要注意⼀下。Nacos默认将元数据记录到derby内存数据库中,容易丢失。所以通常需要

将元数据改为存储到MySQL中。

使⽤MySQL保存元数据,需要在MySQL中创建独⽴的库和表。相关表的初始化脚本记录在nacos的

conf/mysql-schema.sql⽂件中。

接下来需要修改nacos的配置⽂件,主要调整以下部分:

bash 复制代码
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use spring.sql.init.platform replaced.
# spring.datasource.platform=mysql
spring.sql.init.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicod
e=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

接下来就可以启动了。单机模式启动Nacos需要加上参数 -m standalone

shell 复制代码
bin/startup.sh -m standalone

如果启动没有问题,就可以访问nacos⻚⾯了。访问地址:http://xxxxxxx:8848/nacos 。默认⽤户名

和密码都是nacos

在nacos中,有个命名空间的概念。通过命名空间可以在不同应⽤之间形成数据隔离。

6、安装RocketMQ服务

6.1 MQ的作用

  • 异步
  • 解耦
  • 削峰

6.2 RocketMQ的基础服务架构

6.2、安装RocketMQ服务

下载地址:https://rocketmq.apache.org/download/ 选择5.2.0版本。下载 rocketmq-all-5.2.0-binrelease.zip 和 rocketmq-dashboard-master.zip 两个组件。

rocketmq-all-5.2.0-bin-release.zip解压后,可以直接启动nameserver服务

shell 复制代码
cd /app/rocketmq_5.2.0
nohup bin/mqnamesrv &

启动后,会在当前⽬录⽣成⼀个nohup.out⽇志⽂件。观察⽇志⽂件,有以下⼀⾏关键⽇志,表示服务启动成功。

bash 复制代码
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876

接下来启动broker服务。启动之前建议对配置⽂件做⼀些调整。vi conf/broker.conf,增加下⾯内容。主要是

对存储⽂件进⾏规划,便于后续掌握服务运⾏情况。

bash 复制代码
#允许⾃动创建topic ⽤于测试
autoCreateTopicEnable=true
#存储路径
storePathRootDir=/app/rocketmq/store
storePathCommitLog=/app/rocketmq/store/commitlog
sstorePathConsumeQueue=/app/rocketmq/store/consumequeue
storePathIndex=/app/rocketmq/store/index
storeCheckpoint=/app/rocketmq/store/checkpoint
abortFile=/app/rocketmq/store/abort

然后,需要配置⼀个环境变量,指向name server服务地址

bash 复制代码
vi ~/.bash_profile
# 增加下⾯配置项
# export NAMESRV_ADDR=192.168.65.210:9876
# 增加完成后,让配置⽂件⽣效
source ~/.bash_profile

启动broker服务

bash 复制代码
cd /app/rocketmq_5.2.0
nohup bin/mqbroker -c conf/broker.conf &
# 启动成功的关键⽇志
# The broker[broker-a, 192.168.65.210:10911] boot success. serializeType=JSON and name
server is 192.168.65.210:9876

6.3、安装dashboard面板服务

RocketMQ提供了⼀个基于Web的管理服务Dashboard,可以基于浏览器快速监控并管理RocketMQ服务。

rocketmq-dashboard-master.zip包中,只包含了Dashboard服务的源码,并没有直接提供编译后的jar包。

复制代码
mvn clean package -Dmaven.test.skip=true

编译完成后,在源码的target⽬录下可以获得可运⾏的jar包rocketmq-dashboard-1.0.1-SNAPSHOT.jar。

接下来把jar包上传到服务器上,并在jar包同⽬录下创建⼀个⽂件application.yml,配置dashboard服务指向的

nameserver服务地址

shell 复制代码
rocketmq:
config:
namesrvAddrs:
- 192.168.65.210:9876

到此就可以启动dashboard服务了

shell 复制代码
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &

如果nohup.out中没有报错信息,那么就可以访问dashboard的管理⻚⾯。

在集群中可以看到当前服务状况。

6.4、RocketMQ快速体验

RocketMQ内置了测试案例,可以快速体验RocketMQ的收发消息功能。

shell 复制代码
cd /app/rocketmq_5.2.0
# 发送消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 接受消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

很显然,tools.sh实际上是提供了⼀个RocketMQ客户端的运⾏环境,然后去执⾏对应的java类。如果想要了解

在Java应⽤中如何往RocketMQ收发消息,可以去查看下对应的测试类

相关推荐
安卓开发者2 小时前
OkHttp 与 RxJava/RxAndroid 完美结合:构建响应式网络请求架构
okhttp·架构·rxjava
睡觉z2 小时前
Kubernetes Pod调度基础
云原生·容器·kubernetes
weixin_552444204 小时前
【Deepseek】RAG 技术与模型架构的创新变革
架构
架构师汤师爷4 小时前
扣子Coze智能体实战:自动化拆解抖音对标账号,输出完整分析报告(喂饭级教程)
架构
B64A-消闲5 小时前
k8s知识点
云原生·容器·kubernetes
KubeSphere 云原生5 小时前
云原生周刊:K8s 中的后量子密码学
云原生·kubernetes·密码学
夜斗小神社5 小时前
【黑马SpringCloud微服务开发与实战】(四)微服务02
spring·spring cloud·微服务
爱吃香蕉的阿豪6 小时前
在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型
微服务·.netcore·信息与通信·grpc
cherishSpring6 小时前
gradle7.6.1+springboot3.2.4创建微服务工程
微服务·云原生·架构
快乐肚皮6 小时前
ZooKeeper学习专栏(四):单机模式部署与基础操作详解
学习·zookeeper·架构·debian·部署