自学内容网 自学内容网

【Nacos03】消息队列与微服务之Nacos 集群部署

集群部署

集群部署说明

因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面
http://ip1:port/openAPI  直连ip模式,机器挂则需要修改ip才可以使用。
http://SLB:port/openAPI  挂载SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),直连SLB即可,下面挂server真实ip,可读性不好。
http://nacos.com:port/openAPI  域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式

1cd5fb79695a491bb0d9ec2142c28462.png

使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端 口,请勿暴露到外部网络环境和客户端测。

部署案例

预备环境准备

请确保是在环境中安装使用:

下载源码或者安装包

你可以通过两种方式来获取 Nacos。

从 Github 上下载源码方式

apt update && apt -y install git openjdk-8-jdk maven
git clone https://github.com/alibaba/nacos.git
unzip nacos-develop.zip
cd nacos-develop
mvn -Prelease-nacos clean install -U  
cd distribution/target/nacos-server-2.3.0-SNAPSHOT/nacos/

下载编译后压缩包方式

apt update && apt -y install openjdk-8-jdk
apt update && apt -y install openjdk-11-jdk
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar xf nacos-server-2.2.3.tar.gz  -C /usr/local/

范例:二进制安装

[root@ubuntu2204 ~]#apt update && apt -y install openjdk-11-jdk
[root@ubuntu2204 ~]#wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
[root@ubuntu2204 ~]#tar xf nacos-server-2.2.3.tar.gz  -C /usr/local/

确定数据源

[root@ubuntu2204 ~]#apt update && apt -y install mysql-server 
[root@ubuntu2204 ~]#sed -i '/127.0.0.1/s/^/#/' /etc/mysql/mysql.conf.d/mysqld.cnf
[root@ubuntu2204 ~]#systemctl restart mysql
[root@ubuntu2204 ~]#mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 8.0.33-0ubuntu0.22.04.4 (Ubuntu)
mysql> create user nacos@'10.0.0.%' identified with  mysql_native_password by 'nacos';
mysql> create database nacos;
mysql> grant all on nacos.* to nacos@'10.0.0.%' ;
[root@node01 ~]#apt update && apt -y install mysql-client
[root@node01 ~]#mysql -unacos -pnacos -h10.0.0.200 nacos  < /usr/local/nacos/conf/mysql-schema.sql

配置集群配置文件

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。 在所有集群节点修改下面文件

[root@node1 ~]#vim /usr/local/nacos/conf/cluster.conf
# ip:port
10.0.0.201:8848
10.0.0.202:8848
10.0.0.203:8848

 

application.properties 配置

如果使用内置数据源无需修改配置

如果使用MySQL数据源,在所有集群节点上需要执行下面操作

[root@node1 ~]#vi /usr/local/nacos/conf/application.properties
#*************** Config Module Related Configurations ***************#
### 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://10.0.0.200:3306/nacos?
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=tru
e&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos
[root@node1 ~]#cd /usr/local/nacos/conf/
[root@node1 conf]#ls -1
1.4.0-ipv6_support-update.sql
announcement.conf
application.properties
application.properties.example
cluster.conf
cluster.conf.example
derby-schema.sql
mysql-schema.sql
nacos-logback.xml

 #将配置同步到其它的节点
[root@node1 conf]#scp application.properties cluster.conf 10.0.0.202:/usr/local/nacos/conf
[root@node1 conf]#scp application.properties cluster.conf 10.0.0.203:/usr/local/nacos/conf

启动和关闭服务

Linux/Unix/Mac

集群模式启动

使用内置数据源

/usr/local/nacos/bin/startup.sh -p embedded 

使用外置数据源

每个集群节点启动

[root@node1 conf]#/usr/local/nacos/bin/startup.sh
/usr/lib/jvm/java-11-openjdk-amd64/bin/java   -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xlog:gc*:file=/usr/local/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=100m -Dloader.path=/usr/local/nacos/plugins,/usr/local/nacos/plugins/health,/usr/local/nacos/plugins/cmdb,/usr/local/nacos/plugins/selector -Dnacos.home=/usr/local/nacos -jar /usr/local/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/usr/local/nacos/conf/ --logging.config=/usr/local/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
nacos is starting with cluster
nacos is starting,you can check the /usr/local/nacos/logs/start.out

[root@node1 ~]#cat /usr/local/nacos/logs/start.out
2023-06-03 21:57:58,660 INFO Nacos is starting...
2023-06-03 21:58:03,513 INFO Nacos started successfully in cluster mode. use external storage

 关闭服务

Linux/Unix/Mac

[root@node1 ~]#/usr/local/nacos/bin/shutdown.sh

服务注册&发现和配置管理

服务注册

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.wang.serviceName&ip=1.2.3.4&port=8080'

注意:如果开启默认鉴权插件,需要在Header中带上用户名密码。

服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.wang.serviceName'

注意:如果开启默认鉴权插件,需要在Header中带上用户名密码。

 

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"

注意:如果开启默认鉴权插件,需要在Header中带上用户名密码。

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test" 

注意:如果开启默认鉴权插件,需要在Header中带上用户名密码 。

配置 haproxy 实现代理

#在新的服务器上配置代理
[root@ubuntu2204 ~]#apt update && apt install haproxy
[root@ubuntu2204 ~]#vim /etc/haproxy/haproxy.cfg
 #添加下面行
listen stats
    mode http
 bind 0.0.0.0:9999
    stats enable
    log global
    stats uri     /haproxy-status
    stats auth    admin:123456
 listen nacos
    bind 0.0.0.0:80
    server nacos01 10.0.0.201:8848 check
    server nacos02 10.0.0.202:8848 check
    server nacos03 10.0.0.203:8848 check
[root@ubuntu2204 ~]#systemctl reload haproxy

eaf5252602f346d29242a6f876258b3f.png 

 

基于 Docker 部署

操作步骤

  • Clone 项目

 git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker

  • 单机模式 Derby

docker-compose -f example/standalone-derby.yaml up 

  • 单机模式 MySQL

如果希望使用MySQL5.7

docker-compose -f example/standalone-mysql-5.7.yaml up

如果希望使用MySQL8  

docker-compose -f example/standalone-mysql-8.yaml up 

 

 

  • 集群模式

docker-compose -f example/cluster-hostname.yaml up  

 

  • 服务注册

 

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
  • 服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName' 

  • 发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs? dataId=nacos.cfg.dataId&group=test&content=helloWorld" 

  • 获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test" 

  • Nacos 控制台

link:http://127.0.0.1:8848/nacos/ 

 

 

 

 

 

 

 


原文地址:https://blog.csdn.net/weixin_74814027/article/details/144260098

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!