Nacos 是阿里巴巴的产品,主要用来做微服务的注册中心和配置中心,界面美观,功能强大,在国内非常受欢迎。
本篇博客主要介绍如何搭建单机版的 Nacos ,为编写后续的博客做准备。后面也会介绍 Nacos 集群的搭建,搭建过程都很简单。
官方建议使用 2.x 的版本,本篇博客将以当前最新的 2.2.2 版本为例进行搭建,分别展示 Windows 和 Linux 的搭建过程。
一、安装包下载
访问 Nacos 的官网:http://nacos.io/zh-cn/index.html 点击【前往 GitHub】进入 GitHub 页面。
在 GitHub 页面的右侧点击 Release 进入 https://github.com/alibaba/nacos/releases 下载页面。
nacos-server-2.2.2.zip 用于 windows 安装。
nacos-server-2.2.2.tar.gz 用于 Linux 安装,本篇博客使用 CentOS7 进行安装。
把这两个安装包下载下来。Nacos 的安装非常简单,解压缩就相当于安装。
二、Windows 安装
首先需要安装 jdk ,建议版本是 1.8 或更高版本,这里省略了 jdk 的安装介绍。
本篇博客将 nacos-server-2.2.2.zip 解压缩到 D:\SoftWareInstall 目录下,建议文件夹不要包含中文、空格等,不要自己给自己找麻烦。解压后 SoftWareInstall 下就会有一个 nacos 的文件夹,其包含的文件如下:
配置文件在 conf 文件夹中,进入 conf 文件夹,内容如下:
对于 nacos 来说,默认情况下,使用自己内嵌的 derby 数据库,这是一款使用 Java 编写的开源数据库,具体介绍自己可以百度。如果仅仅是做开发测试,那就使用它吧。对于生产环境,还是老老实实的使用 Mysql 数据库存储 Nacos 的数据比较好。
在 mysql 上创建一个数据库,名称就可以随便取名,本篇博客取名为 nacos,然后运行上图中 conf 文件夹下的 mysql-schema.sql 文件,初始化相关的数据库表,结果如下所示:
打开 conf 文件夹下的 application.properties 文件(这个是 nacos 的配置文件),对 nacos 进行配置。
由于 application.properties 文件内容太多,这里就不列出来了,最主要关注 5 个配置项:
# 这个是 nacos 的启动端口,默认就是 8848,这里不做更改
# 需要注意的是 nacos 2.0 版本以上,新增了 grpc 端口,是在启动端口上加 1000,也就是 9848
# 防火墙需要把 8848 和 9848 端口都进行开放,少开放一个端口,就会导致 Java 程序连接 nacos 时有报错信息
server.port=8848
# 下面是配置 nacos 有关连接 mysql 的一些参数配置
# 由于本篇博客没有采用读写分离,只有一个 mysql 库,所以 db.num=1
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.216.128:3306/nacos?characterEncoding=utf8
db.user.0=root
db.password.0=root
# 该配置项决定访问 nacos 时是否账号密码认证,默认值是 false,强烈建议修改为 true
nacos.core.auth.enabled=true
# 下面这俩配置项,其实没啥用,没什么作用,但是其值不能空着,否则 nacos 无法正常工作。
# 默认值为空字符串,随便填写一个值就行
nacos.core.auth.server.identity.key=jobs
nacos.core.auth.server.identity.value=888
# 这个配置项,我也没有发现有什么用,默认值为空字符串,但是其值不能空着,否则 nacos 无法正常工作。
# 找一个在线生成 base64 字符串的网站,随便输入一个拥有32个字符组成的字符串,生成 base64 字符串,填写到这里即可。
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
然后使用命令行窗口,进入 D:\SoftWareInstall\nacos\bin 目录下,运行以下命令启动 nacos
# -m 表示 mode 模式,standalone 表示单机启动。
# 默认采用集群的方式启动,因此如果直接运行 startup.cmd 表示集群启动
startup.cmd -m standalone
因为 nacos 是部署在我本机的 windows 上,因此只需要访问 http://loacalhost:8848/nacos/index.html
即可。
登录 nacos 网站的默认账号和密码都是 nacos
三、将 nacos 安装成 Windows 服务
nssm.exe 的下载地址为:http://www.nssm.cc/download
当前最新版本是 2.24,下载完成后,解压缩会发现有分为 32 位和 64 位,
我的电脑是 64 位,因此我将 64 位的 nssm.exe 复制到 nexus-3.48.0-01 的 bin 目录下(D:\SoftWareInstall\nexus\nexus-3.48.0-01\bin)。
然后打开控制台,将 nssm.exe 拖动控制台窗口,后面跟上 install 参数,运行命令:
nssm.exe install
弹出如下窗口,然后录入相关的信息:
Application Path:填写 startup.cmd 的绝对路径。
Startup directory:这个是 nacos 的启动目录,自动填充到了 nacos 所在的 bin 目录即可。
Arguments:启动时指定的参数,这里填写 -m standalone
即可。
Service name:服务的名字,这个名字会显示在 Windows 服务中,这里取名为 NacosService。
以上参数填写好后,点击 Install service 即可。安装成功后,到打开 服务 管理器,启动服务即可。
四、CentOS7 安装
在 CentOS7 上安装,跟 Windows 相同的地方是:解压缩,修改配置文件内容,因此下面就可以简略介绍了。
首先还是得先安装 jdk ,版本在 1.8 或更高版本,这里省略了 jdk 的安装介绍。
在根目录创建一个 app 文件夹:mkdir /app
将安装包上传到 /app 目录下,然后进行解压缩:tar -zxvf nacos-server-2.2.2.tar.gz
这样在 /app 目录下就会多出一个 nacos 目录,然后就可以删除安装包了:rm -rf nacos-server-2.2.2.tar.gz
修改 nacos 的配置文件:vim /app/nacos/conf/application.properties
具体修改的内容,跟上面的 windows 安装中修改的内容,一模一样
然后将 nacos 安装为 linux 的服务,这样后续方便 nacos 后续的维护操作,进入系统服务目录:cd /etc/systemd/system
创建一个 nacos.service 的文件:touch nacos.service
编辑 nacos.service 文件:vim nacos.service
输入以下内容:
[Unit]
Description=Nacos
After=syslog.target network.target
[Service]
Type=forking
Environment='JAVA_HOME=/app/jdk1.8'
ExecStart=/app/nacos/bin/startup.sh -m standalone
ExecStop=/app/nacos/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
保存退出后,只要服务的文件有变化,就需要运行命令:systemctl daemon-reload
然后就可以运行 systemctl start nacos
启动 nacos 服务。
为了能够让 nacos 能够开机启动,运行 systemctl enable nacos
即可。
对 nacos 的常用操作命令,主要如下:
# 启动 nacos 服务
systemctl start nacos
# 停止 nacos 服务
systemctl stop nacos
# 重启 nacos 服务
systemctl restart nacos
# 让 nacos 服务开机启动
systemctl enable nacos
# 禁止 nacos 服务开机启动
systemctl disable nacos
由于 CentOS 有防火墙,本篇博客的 nacos 使用默认的 8848 端口,因此 grpc 端口是 9848,需要开放这俩端口:
# 防火墙开放 8848 端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
# 防火墙开放 9848 端口
firewall-cmd --zone=public --add-port=9848/tcp --permanent
# 重新加载防火墙配置
firewall-cmd --reload
# 查看防火墙已经开放的端口
firewall-cmd --list-ports
# 当然你也可以关闭防火墙
systemctl stop firewalld
一般情况下,我们也最好关闭 CentOS 的 Selinux 的安全控制。
vim /etc/selinux/config
将 SELINUX 的值修改为 disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
然后重启 CentOS7 即可禁用 Selinux 的配置生效。