微服务基础环境搭建-centos7

文章目录

  • 1、安装docker
    • 1.1、安装步骤
    • 1.2、docker常用命令
  • 2、安装Nginx
  • 3、Docker安装Mysql
  • 4、Docker安装Redis
  • 5、安装Nacos
    • 5.1、Nacos的作用
    • 5.2、单体服务安装
  • 6、安装RocketMQ服务
    • 6.1 MQ的作用
    • 6.2 RocketMQ的基础服务架构
    • 6.2、安装RocketMQ服务
    • 6.3、安装dashboard面板服务
    • 6.4、RocketMQ快速体验

1、安装docker

1.1、安装步骤

  1. 卸载旧版本docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  1. 安装工具包
yum install -y yum-utils
  1. 设置镜像仓库
  • 推荐使⽤国内阿⾥云的仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
yum makecache fast
  • 镜像加速配置
    登录阿里云, 搜索进入容器镜像服务,配置镜像加速器,
    修改daemon配置文件/etc/docker/daemon.json来使用加速器, 没有daemon.json文件,就创建一个,将下方的https://xxxx.mirror.aliyuncs.com换成自己的加速器地址
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
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
docker run hello-world

1.2、docker常用命令

# 帮助命令
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

# 搜索镜像
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,需要将他的⽇志⽂件、数据⽂件和配置⽂件挂载到宿主机上

# 拉取镜像
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的配置⽂件和⽇志⽂件挂载到宿主机上。

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的配置⽂件,主要调整以下部分:

### 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

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服务

cd /app/rocketmq_5.2.0
nohup bin/mqnamesrv &

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

The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876

接下来启动broker服务。启动之前建议对配置⽂件做⼀些调整。vi conf/broker.conf,增加下⾯内容。主要是
对存储⽂件进⾏规划,便于后续掌握服务运⾏情况。

#允许⾃动创建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服务地址

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

启动broker服务

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服务地址

rocketmq:
config:
namesrvAddrs:
- 192.168.65.210:9876

到此就可以启动dashboard服务了

nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &

如果nohup.out中没有报错信息,那么就可以访问dashboard的管理⻚⾯。
在集群中可以看到当前服务状况。

6.4、RocketMQ快速体验

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

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收发消息,可以去查看下对应的测试类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92037.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty知识点

一、Netty的零拷贝机制 零拷贝的基本理念&#xff1a;避免在用户态和内核态之间拷贝数据&#xff0c;从而降低 CPU 占用和内存带宽的消耗除了系统层面的零拷贝。 1、FileRegion 接口 FileRegion 是 Netty 提供的用于文件传输的接口&#xff0c;它通过调用操作系统的 sendfile 函…

Kafka的基本使用

目录 认识Kafka 消息队列 消息队列的核心概念 核心价值与解决的问题 Kafka ZooKeeper Kafka的基本使用 环境安装 启动zookeeper 启动Kafka 消息主题 创建主题 查询主题 修改主题 发送数据 命令行操作 JavaAPI操作 消费数据 命令行操作 JavaAPI操作 认识Kafka…

Flink2.0学习笔记:Table API SQL

stevensu1/EC0720 表 API 和 SQL# 表 API 和 SQL——用于统一流和批处理 加工。表 API 是适用于 Java、Scala 和 Python 的语言集成查询 API&#xff0c;它 允许组合来自关系运算符的查询&#xff0c;例如 selection、filter 和 join in 一种非常直观的方式。Flink 的 SQL 支…

【 SpringAI核心特性 | Prompt工程 】

1. Prompt 工程 基本概念&#xff1a;Prompt ؜工程又叫提示‏词工程&#xff0c;简单来说&#xff0c;就是输入‌给 AI 的指令。 比如下面‏这段内容&#xff0c;就是提示词&#xff1a; 请问桂林电子科技大学是一个怎么样的学校&#xff1f;1.1 Prompt分类 在 AI ؜对话中…

windows wsl2-06-docker hello world

hello-world 例子 就像其他任何一门语言一样&#xff0c;我们来体验 docker 的 hello world $ docker run hello-world但是报错 :~$ docker run hello-world Unable to find image hello-world:latest locally docker: Error response from daemon: Get "https://registry…

Python知识点4-嵌套循环break和continue使用死循环

一、循环【重点掌握】 1.嵌套循环类似于嵌套if语句 语法&#xff1a; while 表达式1&#xff1a;while 表达式2&#xff1a;语句# 1. # 循环5次&#xff0c;打印0~4 m 0 while m < 5:print(m)m 1 # 循环3次&#xff0c;打印0~2 n 0 while n < 3:print(n)n 1print(&qu…

将HTML+JS+CSS数独游戏包装为安卓App

HTMLJSCSS制作一个数独游戏-CSDN博客 中开发了一个数独游戏&#xff0c;这个数独游戏提供了一次性回退到指定步骤的辅助功能&#xff0c;在解决复杂数独问题时十分有帮助&#xff0c;可作为玩数独游戏的辅助工具&#xff0c;因此&#xff0c;考虑将它改装成安卓App安装在手机上…

编程语言Java入门——核心技术篇(一)封装、继承和多态

同专栏基础知识篇写在这里&#xff0c;有兴趣的可以去看看&#xff1a; 编程语言Java入门——基础知识篇&#xff08;一&#xff09;-CSDN博客 编程语言Java入门——基础知识篇&#xff08;二&#xff09;-CSDN博客 编程语言Java入门——基础知识篇&#xff08;三&#xff0…

【39】MFC入门到精通——C++ /MFC操作文件行(读取,删除,修改指定行)

文章目录1 通过关键词&#xff0c;读取某一行 &#xff08;3种方法&#xff09;2 删除 指定行3 修改 指定行1 通过关键词&#xff0c;读取某一行 &#xff08;3种方法&#xff09; 通过定位关键词&#xff0c;读取某一行信息,返回CString //通过定位关键词&#xff0c;读取某…

5 种可行的方法:如何将 Redmi 联系人备份到 Mac

将 Redmi 联系人备份到 Mac 是防止因手机损坏、丢失或更换设备而导致数据丢失的重要措施。虽然云服务提供了便利性&#xff0c;但拥有离线备份可以提供额外的安全性&#xff0c;而无需完全依赖互联网。如果您想知道如何将 Redmi 联系人备份到 Mac&#xff0c;本文将为您介绍 5 …

LeRobot 具身智能机械臂 SO-ARM100 从搭建到训练全流程

今天给大家分享一下 LeRobot 具身智能机械臂 SO-ARM100 的完整使用流程&#xff0c;包括设备组装、环境配置、远程控制、数据录制到模型训练的全过程。适合刚入门具身智能的小伙伴参考学习。 一、前期准备与资源获取 在开始之前&#xff0c;我们需要准备好相关的资源和工具&a…

LINUX720 SWAP扩容;新增逻辑卷;逻辑卷扩容;数据库迁移;gdisk

SWAP空间扩展 方法一 增加硬盘或分区扩展 swap -s mkswap /dev/sdd6 blkid /dev/sdd6 swapon /dev/sdd6 swapon -s vim /etc/fstab /dev/sdd6 swap swap defaults 0 0 开机自动扩容 swap -s [rootweb ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sd…

Python 进程间通信:TCP安全加密数据传输

最近在写安全方面的程序&#xff0c;有需求&#xff0c;就做了这些TCP加密数据传输类。 utils.safeUtils的内容详见&#xff1a; SafeObj&#xff1a;Python 高安全性加密数据容器类-CSDN博客SafeKey&#xff1a;Python 高安全性加密密码容器类-CSDN博客 如有任何问题或漏洞欢迎…

Windows批量修改文件属性方法

标题使用icacls命令&#xff08;推荐批量操作&#xff09;打开管理员权限的命令提示符&#xff08;CMD&#xff09;执行以下命令&#xff1a;cmd icacls "文件夹路径" /grant 用户名:(OI)(CI)F /T /C 参数说明&#xff1a;(OI)&#xff1a;对象继承 - 适用于文件夹(C…

Entity Component System架构

ECS架构 1 简介 在当今快速发展的软件开发领域&#xff0c;游戏开发、实时模拟等场景对系统的性能、灵活性和可扩展性提出了极高的要求。传统的面向对象架构在面对复杂且动态变化的实体时&#xff0c;往往会出现代码耦合度高、扩展性差等问题。​ ECS&#xff08;Entity - Com…

.vscode 扩展配置

一、vue快捷键配置 在项目.vscode下新建vue3.0.code-snippets 每当输入vue3.0后自动生成代码片段 {"Vue3.0快速生成模板": {"scope": "vue","prefix": "Vue3.0","body": ["<template>"," &…

一个基于阿里云的C端Java服务的整体项目架构

1.背景介绍 总结一下工作使用到的基于通常的公有云的项目整体架构&#xff0c;如何基于公有云建设安全可靠的服务&#xff0c;以阿里云为例的整体架构&#xff1b;1. 全局流量治理层&#xff08;用户请求入口&#xff09;1.1 域名与 DNS 解析域名注册与备案&#xff1a;通过阿里…

《剥开洋葱看中间件:Node.js请求处理效率与错误控制的深层逻辑》

在Node.js的运行时环境中&#xff0c;中间件如同一系列精密咬合的齿轮&#xff0c;驱动着请求从进入到响应的完整旅程&#xff0c;而洋葱模型则是这组齿轮的传动系统。它以一种看似矛盾的方式融合了顺序与逆序、分离与协作——让每个处理环节既能独立工作&#xff0c;又能感知全…

GaussDB union 的用法

1 union 的作用union 运算符用于组合两个或更多 select 语句的结果集。2 union 使用前提union 中的每个 select 语句必须具有相同的列数这些列也必须具有相似的数据类型每个 select 语句中的列也必须以相同的顺序排列3 union 语法select column_name(s) from table1 union sele…

构建足球实时比分APP:REST API与WebSocket接入方案详解

在开发足球实时比分应用时&#xff0c;数据接入方式的选择直接影响用户体验和系统性能。本文将客观分析REST API和WebSocket两种主流接入方案的技术特点、适用场景和实现策略&#xff0c;帮助开发者做出合理选择。一、REST API&#xff1a;灵活的数据获取方案核心优势标准化接口…