手把手搭建生产可用的 Nacos 集群

栏目: Java · 发布时间: 6年前

内容简介:注:本文使用Nacos 1.0.1 + MySQL 8.0前面部署的是单机版的Nacos Server,这一般不适用于生产。

点击上方 "IT牧场" ,选择 "设为星标" 技术干货每日送达!

注:本文使用Nacos 1.0.1 + MySQL 8.0

前面部署的是单机版的Nacos Server,这一般不适用于生产。

本节详细探讨如何搭建一个生产可用的Nacos集群。讨论的内容主要包括:使用 MySQL 作为存储持久化数据,以及如何搭建Nacos集群。

一、部署架构图

部署架构图如下:

手把手搭建生产可用的 Nacos 集群

二、安装MySQL数据库

生产环境需使用MySQL作为后端存储,因此需要搭建MySQL。生产中,MySQL建议至少主备模式,高可用MySQL更佳。

高可用MySQL搭建方案有很多(例如MMM、MHA、 Galera Cluster [1] MySQL NDB Cluster [2] MySQL InnoDB Cluster [3] 以及  Group Replication [4] 等),不同方案搭建方式不同。所以MySQL集群的搭建本文就不赘述了,请同学们自行百度。 常见高可用方案对比可参考  《MySQL高可用方案选型参考》 [5]

注:建议使用MySQL 5.6.5+

2.1 导入初始化脚本

找到 conf/nacos-mysql.sql ,将其导入到数据库中。

2.2 配置数据库连接

找到 conf/application.properties ,添加如下内容:


 

# 表明用MySQL作为后端存储

spring.datasource.platform=mysql


# 有几个数据库实例

db.num=2


# 第1个实例的地址

db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

# 第2个实例的地址

db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=nacos_devtest

db.password=nacos

2.3 对于MySQL 8.0

Nacos 1.0.1内置的connector是 mysql-connector-java-5.1.34 ,该connector无法连MySQL 8.0。还好Nacos提供了插件机制,可以支持MySQL 8.0+。方法如下:

在上面操作的基础上,下载支持MySQL 8.0的connector,例如: mysql-connector-java-8.0.16 。下载地址: 点我下载 [6] 在Nacos的  plugins  目录下创建  mysql  目录,并将下载的connector扔到该目录即可。

三、主机规划

节点 端口
127.0.0.1 8848
127.0.0.1 8849
127.0.0.1 8850

复制三份Nacos安装包,将 conf/application.properties 中的

server.port=8848

分别改为:


 

server.port=8848

server.port=8849

server.port=8850

四、开始搭建

1 找到 conf/cluster.conf.example ,将其改名为  conf/cluster.conf ,并将内容改为类似如下,即:以 ip:端口 的形式列出Nacos集群中所有实例的地址:


 

# ip:port

127.0.0.1:8848

127.0.0.1:8849

127.0.0.1:8850

2 启动所有Nacos实例

sh startup.sh

五、配置代理服务器

5.1 安装NGINX

NGINX各系统安装说明详见 官方文档 [7]

5.2 配置NGINX

为NGINX添加如下配置(对于 Linux 操作系统,如在安装NGINX时未自定义目录,则可在 /etc/nginx/conf.d 新建文件,命名为  nacos.conf ,内容如下;同时删除  default.conf 即可):


 

upstream nacos {

server 127.0.0.1:8848;

server 127.0.0.1:8849;

server 127.0.0.1:8850;

}


server {

listen 80;

server_name localhost;

location /nacos/ {

proxy_pass http://nacos/nacos/;

}

}

六、测试

访问 http://localhost/nacos 可看到Nacos的登录页,登录后即可正常使用Nacos。

七、优化&最佳实践

实际项目中, 建议为Nacos绑定一个域名 (域名解析 & 修改NGINX配置的server_name),这样即使未来Nacos Server需要迁移,也无需修改Nacos Client端的配置; 本文为了演示方便,将所有实例部署在了一台机器中;实际项目中, 请将Nacos部署在不同机器中 ,从而实现更好的容灾与隔离

八、参考文档

集群部署说明 [8]

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

001:《Java并发与高并发解决方案》学习笔记; 002:《深入JVM内核——原理、诊断与优化》学习笔记; 003:《Java面试宝典》 004:《Docker开源书》 005:《Kubernetes开源书》 006:《DDD速成(领域驱动设计速成)》 007: 全部 008: 加技术讨论群

往期精彩

References

[1] Galera Cluster:  http://galeracluster.com/

[2] MySQL NDB Cluster:  https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster.html

[3] MySQL InnoDB Cluster:  https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-working-with-cluster.html

[4] Group Replication:  https://dev.mysql.com/doc/refman/8.0/en/group-replication.html

[5] 《MySQL高可用方案选型参考》:  http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml

[6] 点我下载:  https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar

[7] 官方文档:  https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#prebuilt_redhat

[8] 集群部署说明:  https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

想知道更多?长按/扫码关注我吧↓↓↓ 手把手搭建生产可用的 Nacos 集群 >>>技术讨论群<<< 喜欢就点个 "在看" 呗^_^


以上所述就是小编给大家介绍的《手把手搭建生产可用的 Nacos 集群》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Persuasive Technology

Persuasive Technology

B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95

Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具