前置条件
nacos安装部署非常的简单,下面一起学习一下nacos的安装。初步了解一下nacos的安装过程。
上面基础环境奠定了以后开始做nacos集群的安装和部署工作。
下载nacos
根据官方推荐,目前推荐使用2.0.3稳定版本。下载地址:nacos在github上的下载地址。
特别提醒:
这里有个坑需要规避,进入这个下载地址后,不要直接点击后面的zip 或者tar.gz 下载,需要点击对应版本号,进入详情页面,拉到底部下载,下载的包名是nacos-server-2.0.3.tar.gz 。如果直接点击后面的zip 或者tar.gz 下载,下载的包是nacos-2.0.2.tar.gz ,这个不是编译好的安装包。
上传nacos安装包到服务器上
- 可以通过
scp 命令将nacos安装包上传到服务器上,命令如下:
scp D:\\nacos-server-2.0.3.tar.gz root@192.168.75.130:/usr/local
tar -xvf nacos-server-2.0.3.tar.gz
mv nacos nacos-8840
持久化数据库配置
- 进入
nacos-8840/cnof 目录下,将Connect URL of DB 修改为如下内容:
spring.datasource.platform=mysql
jdbc.DriverClassName=com.mysql.cj.jdbc.Driver
db.num=1
db.url.0=jdbc:mysql://192.168.75.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=123456
- 将
nacos-8840/conf 目录下的nacos-mysql.sql 文件复制到数据库所在的服务器内,创建名为nacos_config 数据库,并在数据库内执行sql脚本文件;
scp nacos-mysql.sql root@192.168.75.128:/usr/local
mysql -uroot -p123456
create datasource nacos_config
use nacos_config
source /usr/local/nacos-mysql.sql
修改集群配置
- 将
nacos-8840/conf 目录下的cluster.conf.example 文件复制一份并重命名为cluster.conf ,修改其内容如下:
cp cluster.conf.example cluster.conf
vim cluster.conf
192.168.75.130:8840
192.168.75.130:8850
192.168.75.130:8860
- 修改
application.properties 文件,将server-port 修改为8840 ;
server.servlet.contextPath=/nacos
server.port=8840
配置优化点
这个优化点在你的服务器性能较好的情况下,可以不做,我是在单台虚拟机里面部署三个nacos服务,资源紧张,修改一下此配置更放心,进入nacos-8840/bin 目录,找到startup.sh 文件,将文件中java堆栈的配置修改小一点,这里修改成128m,修改内容JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" ,具体修改如下:
if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
fi
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi
if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
fi
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi
复制集群节点
- 上面已经完成端口为
8840 节点的配置,接下来将nacos-8840 复制两份出来,并重命名:
cp -R nacos-8840 nacos-8850
cp -R nacos-8840 nacos-8860
- 修改
8850 和8860 节点的配置,很简单,将application.properties 文件中的server-port 做对应的修改即可。
启动集群服务
./nacos-8840/bin/startup.sh
./nacos-8850/bin/startup.sh
./nacos-8860/bin/startup.sh
netstat -ano | grep 8840
netstat -ano | grep 8850
netstat -ano | grep 8860
配置nginx负载均衡
upstream cluster {
server 127.0.0.1:8840;
server 127.0.0.1:8850;
server 127.0.0.1:8860;
}
listen 8848;
server_name localhost;
location / {
proxy_pass http://cluster;
}
访问nacos页面
在浏览器中输入:http://192.168.75.130:8848/nacos ,会弹出登录页面,默认用户名和密码都是nacos,到此集群部署大功告成。
存在的坑点
官方解释
nacos2.0版本相比1.x新增了gRPC的通信方式,因此需要增加两个端口,新增端口在配置的主端口(server.port )基础上,进行一定的偏移量自动生成。偏移规则:
端口 | 与主端口偏移量 | 描述 |
---|
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端服务发起连接和请求 | 9849 | 1001 | 客户端gRPC请求服务端端口,用于服务间同步等 |
改动引起的变化
因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如:8840 、8841 、8842 ,否则会发生端口冲突。
运行在8840 端口nacos服务实际上会占用8840 、8940 、8941 三个端口;
运行在8841 端口nacos服务实际上会占用8841 、8941 、8942 三个端口;
运行在8842 端口nacos服务实际上会占用8842 、8942 、8943 三个端口。
|