【Docker】Nacos的单机部署及集群部署

一、Nacos的介绍

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  1. 动态服务发现:Nacos支持DNS与RPC服务发现,提供原生SDK、OpenAPI等多种服务注册方式和DNS、HTTP与API等多种服务发现方式。
  2. 服务健康监测:Nacos提供对服务的实时健康检查,阻止向不健康的主机或服务实例发送请求。
  3. 动态配置服务:Nacos提供配置统一管理功能,能够以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
  4. 动态DNS服务:Nacos支持动态DNS服务权重路由,能够实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  5. 服务及其元数据管理:Nacos支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据。

二、单机部署

1、准备

开启docker

systemctl start docker

创建目录

mkdir -p mysql/{conf,data,script}

my.cnf配置文件从主机拖到conf文件夹中

my.cnf

[client]
default-character-set=utf8[mysql]
default-character-set=utf8[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidinit_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# modeified: 
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password

创建一个mysql容器:m1,自动连接了默认网络中的网桥(Bridge)

docker run \
--name m1 \
-v /root/mode/mysql/conf/my.cnf:/etc/my.cnf \
-v /root/mode/mysql/data:/var/lib/mysql \
-v /root/mode/mysql/script:/script \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7

2、数据准备

登录MySQL容器

进入:

docker exec -it m1 bash

登入mysql:

mysql -uroot -p

输入设置好的密码:123456

创建一个数据库存放数据:

create database nacos;

使用数据库:

use nacos;

对应目录放入我们的数据脚本

执行指定路径中sql的脚本:

source  /script/nacos-mysql.sql;  

之后查看数据表:

show tables; 

进行用户的授权及密码设置:

grant all on *.* to root@'%' identified by '123456'; 

重启mysql :

docker restart m1

3、下载Nacos镜像

下载Nacos镜像

docker pull nacos/nacos-server

查看m1容器信息:

docker inspect m1

找到对应的IP,后面需要

4、开发访问端口

查看防火墙列表的端口:
 

firewall-cmd --zone=public --list-ports

开放端口8848:
 

firewall-cmd --zone=public --add-port=8848/tcp --permanent

更新防火墙端口:
 

firewall-cmd --reload

5、配置

创建并且运行nacos,及配置MySQL中的用户密码及m1的IP和端口映射

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 8848:8848 \
--name nacos \
nacos/nacos-server

可以使用命令查看该容器是否运行成功:

docker logs nacos

然后就可以进行访问了

三、集群部署

1、创建容器

创建自定义网络

docker network create --subnet 172.18.0.0/16  mode

将自定义网络和网桥连接

docker network connect mode m1

查看m1容器

docker inspect m1

2、配置

创建并且运行nacos01并进行配置

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.0.102:8848  172.18.0.103:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 8848:8848 \
--name nacos01 \
--net  mode \
--ip  172.18.0.101 \
--restart=always \
nacos/nacos-server

创建多个并进行配置

nacos02 

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.0.101:8848  172.18.0.103:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
--name nacos02 \
--net  mode \
--ip  172.18.0.102 \
--restart=always \
nacos/nacos-server

nacos03

docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.0.101:8848  172.18.0.102:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
--name nacos03 \
--net  mode \
--ip  172.18.0.103 \
--restart=always \
nacos/nacos-server

可查看节点

3、负载均衡

在mode目录中创建目录:

mkdir -p nginx/conf.d

在conf.d目录中创建并且编辑配置文件default.conf

编辑

vim default.conf

集群nacos01,nacos02,nacos03的容器IP

#服务器的集群
upstream nacosList {  server nacos01:8848 weight=1; server nacos02:8848 weight=1; server nacos03:8848 weight=1; 
} server {listen  80;server_name  www.wfzldr.com;location / {root   /etc/nginx/html/;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}location  /nacos {proxy_pass  http://nacosList;}}

创建并且运行负载均衡的容器

docker run -itd \--name nginx \-v /root/mode/nginx/conf.d:/etc/nginx/conf.d \-p 80:80 \--net mode \nginx

ip地址/nacos即可访问实现负载均衡

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

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

相关文章

[渗透测试学习] Hospital - HackTheBox

文章目录 信息搜集getshell提权信息搜集 nmap扫描一下端口 发现8080端口和443端口有http服务 然后发现3389端口是启用了ms-wbt-server服务 在对443端口的扫描没有收获,并且只有邮箱登录界面无法注册 接着看向8080端口,我们随便注册用户登录后发现有文件上传功能 getshell …

RDMA Scatter Gather List详解

1. 前言 在使用RDMA操作之前,我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?对于一个使用RDMA进行开发的程序员来说&#…

Solana Mobile开启第二代Saga手机预售,怎么购买Solana Mobile?

PANews 1月17日消息,Solana Mobile官方宣布开启其第二代Saga手机(Chapter 2)的预售,预购押金为450美元,预计将于2025年上半年发货。同时,Chapter 2的发售将会包括推荐(Referrals)和积…

问题:Feem无法发送信息OR无法连接(手机端无法发给电脑端)

目录 前言 问题分析 资源、链接 其他问题 前言 需要在小米手机、华为平板、Dell电脑之间传输文件,试过安装破解的华为电脑管家、小米的MIUI文件传输等,均无果。(小米“远程管理”ftp传输倒是可以,但速度太慢了,且…

“GPC爬虫池有用吗?

作为光算科技的独有技术,在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用,就要知道谷歌爬虫这一概念,谷歌作为一个搜索引擎,里面有成百上千亿个网站,对于里面的网站内容,自然不可…

STM32F103标准外设库——认识STM32(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

写本章前想起题主初学Labview时面对一个位移台程序,傻傻搞不清局部变量和属性节点值有什么区别,概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念,看完记得点赞加关注喔~ 本文程序源代码附在后面,大家可以自行下…

2024 Google material-design-icons助力你创建更好的Material风格应用

2024 Google material-design-icons助力你创建更好的Material风格应用 Material Icons / Material Symbols 这是谷歌推出的两个不同的官方图标集,它们使用相同的基础设计。Material Icons是经典的图标集,而Material Symbols是在2022年4月引入的&#x…

vtk qt切割stl模型

一直想实现对stl模型的某个方向进行平面切割 通过滑动slider然后对模型进行某一个方向的面切割。同时可以用鼠标对模型进行移动缩放,旋转等操作。然后可以加一些颜色点云显示等操作。 stl加载: QString selectFilePath QFileDialog::getOpenFileName…

200SMART作为智能控制器和智能设备使用

200SMART固件版本在V2.5以上的标准型CPU都支持PROFINET IO控制器和IO设备使用。 S7-200SMART作为智能设备仅支持1个IO控制器,可配置的输入输出存储区都为128个字节,地址范围分别为I(Q)1152.0到I(Q)1279.7;每个CPU支持最多8个PROFINET IO设备&#xff0c…

力扣22. 括号生成

回溯 思路&#xff1a; 定义函数 dfs(item, open, close, n) 表示当前 item 有左括号个数 open 和右括号个数 close &#xff1b;使用递归&#xff0c;长度为 n 的序列就是在长度为 n - 1 的序列后加左括号或者右括号&#xff1a; 先放左括号&#xff0c;只要其个数 < n&am…

Python使用HTTP代理实现多线程/多进程网络请求

在处理大量网络请求时&#xff0c;单线程的方式可能会非常耗时。为了提高效率&#xff0c;我们可以使用多线程或多进程来并发地发送请求。而HTTP代理可以帮助我们更好地管理和控制这些并发请求。 在Python中&#xff0c;我们可以使用threading或multiprocessing模块来实现多线…