一、安装
1.1 下载
https://github.com/alibaba/nacos/releases
1.2 解压
tar -zxvf nacos-server-2.0.2.tar.gz
1.3 集群配置
进入安装目录中conf目录,复制cluster.conf.example为cluster.conf
cp cluster.conf.example cluster.conf
编辑cluster.conf,加入所有集群设备
vim cluster.conf
192.168.44.10:8848
192.168.44.11:8848
192.168.44.12:8848
1.4 调整nacos启动时虚拟机内存参数
进入安装目录中bin目录,编辑startup.sh
vim startup.sh
找到集群JAVA参数内存配置
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
根据需要调整堆内存和元数据空间的大小,如果在测试环境中,可以考虑降低内存配置,例如:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m"
1.5 使用内置数据源启动集群
nacos会自动同步集群中的数据,即使这三份数据分别存在不同的数据库中,缺省的数据库是derby.
sh startup.sh -p embedded
关闭服务器
sh shutdown.sh
1.6 使用外置数据源启动集群
使用conf目录下的nacos-mysql.sql
脚本初始化nacos数据库。
1. 数据库名称可以随意,最终要配置到url里。
2. 最好为数据库独立创建用户。
3. mysql数据库可以并行多个实例。nacos应该可以同步写入,未测试。
4. 如果是单数据库实例,建议做好主从备份。
数据库配置支持多数据源。通过
db.num
来指定数据源个数,db.url.index
为对应的数据库的链接。db.user
以及db.password
没有设置index
时,所有的链接都以db.user
和db.password
用作认证。如果不同数据源的用户名称或者用户密码不一样时,可以通过符号,
来进行切割,或者指定db.user.index
,db.user.password
来设置对应数据库链接的用户或者密码。需要注意的是,当db.user
和db.password
没有指定下标时,因为当前机制会根据,
进行切割。所以当用户名或者密码存在,
时,会把,
切割后前面的值当成最后的值进行认证,会导致认证失败。
修改application.properties
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.48.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos
二、使用nginx做负载均衡
参考官方的说明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
客户端连接nacos的时候只能指向一个IP,所以需要额外套一次代理,可以使用任意SLB或VIP的方式。
这里使用nginx,可以考虑nginx做keepalived。
2.1 nginx的基本配置
#user nobody;
worker_processes 1;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream balancer {
server 192.168.44.10:8848 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.44.11:8848 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.44.12:8848 weight=1 max_fails=2 fail_timeout=10s;
}
server {
listen 8848;
server_name localhost;
location / {
proxy_pass http://balancer;
proxy_http_version 1.1;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
}
}