nacos是 springCloud alibaba 的重要组件。
一、nacos 注册中心 + 配置中心(eureka + config + bus
)
1.官网:https://nacos.io/zh-cn/,可在官网下载安装包。官网点击Tags按钮可以查看往期版本。
2.nacos的安装,需要本地有jdk、maven环境变量。
当我们从github上现在源码编译、运行时,需要maven环境变量。如果直接下载压缩包则不需要maven环境变量。
3.压缩包解压后有:bin、conf、data、logs、target等文件夹。
4.配置数据库,否则会出现异常信息:db.num is null
1)在conf目录下编辑 application.properties 文档;
cd /usr/local/nacos/conf
vim application.properties
2)修改文档的 ### Count of DB 区域:
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=nacos
可以看出主要是修改数据库配置信息,其中需要一个名为nacos的数据库。
创建该数据库 或者 换成我们自己的数据库。
3)将conf文件夹中的 nacos-mysql.sql 导入到刚nacos数据库中。
5.bin目录下有startup.cmd 和 startup.sh 分别为windows 和 Linux的启动文件。
deepin系统启动命令:bash -f ./startup.sh -m standalone 其中 -m standalone 表示已单态模式启动。
deepin系统关闭命令:./shutdown.sh
6.nacos有自己的管理系统
访问地址:http://localhost:8848/nacos,默认账号密码nacos/nacos。
二、官网中说在生产环境,nacos要使用高可用的集群环境并需要持久化,并给出了创建集群的方式
1.使用nginx等技术创建虚拟ip,作为访问集群的入口;
2.创建nacos集群;
3.创建高可用的mysql数据库,用于持久化数据。
在nacos中创建的命名空间、配置信息 文档等,会存入到nacos的数据库中。
所以要求集群环境下,各个节点使用同一个数据库库,这样可以保证节点之间的数据一致性。
这也就是,安装nacos时要配置mysql数据库的原因。
4.其中nginx需要是高可用的集群,mysql数据库要主从配置或者高可用集群,nacos集群节点要三个或以上。
三、nacos创建高可用集群步骤–方式一适用于单台服务器 和 多台服务器
1.将nacos解压之后的包复制两份nacos1、nacos2(创建几个集群节点,就复制几份),可以在同一个服务器上,也可以在不同的服务器上。
在同一台服务器上,不同节点要配置不同的端口号。这里我们以同一台服务器,配置两个集群节点为例。
2.修改各个节点的 conf/application.properties 配置文档
cd /usr/local/nacos1/conf
vim application.properties
cd /usr/local/nacos2/conf
vim application.properties
各个节点都需要修改其中的端口号,分别为:
节点1:server.port=8848
节点2:server.port=8847
3.修改各个节点的 conf/cluster.conf 配置文档
conf/cluster.conf 配置文档不存在,需要将 conf/cluster.conf.example 修改为 conf/cluster.conf
各个节点 将 conf/cluster.conf.example 修改为 conf/cluster.conf
cd /usr/local/nacos1/conf
mv cluster.conf.example cluster.conf
cd /usr/local/nacos2/conf
mv cluster.conf.example cluster.conf
各个节点修改 conf/cluster.conf 配置文档的内容
cd /usr/local/nacos1/conf
vim cluster.conf
cd /usr/local/nacos2/conf
vim cluster.conf
各个节点都需要维护以下内容(集群中所有节点的ip:端口号):
192.168.0.156:8848
192.168.0.156:8847
注意:这里配置ip地址时,不要有127.0.0.1或者localhost,
必须是Linux命令 hostname -i 能够识别的IP,具体原因不详。
hostname -i 这条命令,可以用于查看服务器的ip地址。
如果配置时使用了127.0.0.1或者localhost,会出现如下错误:
failed to req API:/api//nacos/v1/ns/instance after all servers([127.0.0.1:8848...
同时:如果以后再出现类似的错误,查看 cluster.conf 文档。该文档会根据机器ip地址的变动而变动。
4.分别启动各个节点,在bin目录下执行如下命令:
bash -f ./startup.sh
或者
sh startup.sh --该命令会提示 startup.sh 未找到,但是也能启动
相比于单态模式启动少了 -m standalone
启动信息有:nacos is starting with cluster 表示以集群模式启动。
分别访问各个节点的管理系统,能够进入说明配置成功。并且在管理系统的集群管理中,可以看到各个节点。
四、nacos创建高可用集群步骤–方式一适用于单台服务器
在视频中同一台服务器创建集群,并不是像我上面这样复制多个nacos的安装包。我的这种方式,更适用于集群节点在不同的服务器上。
他是在同一个nacos安装包中,修改了starup.sh文档,在启动时指定不同的端口号,同一个安装包启动多次。
1.只有一份nacos的安装包,修改 conf/cluster.conf 配置文档。
修改内容和上面一样,都是添加所有节点的ip:端口,如下:
192.168.0.156:8848
192.168.0.156:8847
2.修改nacos的启动脚本 bin/startup.sh 使nacos能够以不同的端口启动,先备份下startup.sh
cd /usr/local/nacos/bin
cp startup.sh startup.sh.bk
其中cp是复制命令,mv是移动命令可以实现剪切和重命名
3.我们查看下 startup.sh 文档的内容:vim startup.sh
这里记录一个命令,在通过vim查看文档内容时,可以通过 :set nu 命令让文档显示行号
第一处修改:
在 startup.sh 文档的第59行有如下一句:
while getopts ":m:f:s:c:p:" opt --这一句的意思是执行startup.sh时可以传递:m、f、s、c、p等参数。
具体这些参数能干什么,在59行下面有一个do cash命令注明了每个参数的作用。
我们在59行增加一个参数t,修改为:while getopts ":m:f:s:c:p:t:" opt
然后在do cash命令中增加参数t的作用,如下:
t)
PORT=$OPTARG;;
这两行的作用就是通过t传递的参数,赋值给端口PORT。
第二处修改:
在 startup.sh 文档的第144行有如下一句:
nohup $JAVA ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
在这一句中增加指定启动端口的命令:-Dserver.port=${PORT},修改后如下:
nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
4.在 conf/application.properties 配置文档中配置了默认的端口号:
server.port=8848 可以注掉也可以不注掉,我选择注掉。
5.经过以上步骤,启动nacos时就可以通过参数t,指定端口号了,如下:
bash -f ./startup.sh -t 8848
bash -f ./startup.sh -t 8847
6.注意这时如果在想启动nacos的单机模式,也需要通过-t指定端口了:
bash -f ./startup.sh -t 8848 -m standalone
五、创建nacos集群需要注意几点:
1.如果是从单态环境变成进群环境,单态环境创建的命名空间,配置信息文档就没有了。所以先构建集群环境,在配置nacos管理系统。
2.我在集群中一个节点配置的命名空间、配置信息 文档等,在其他集群节点也可以看到。
六、创建高可用的数据库、高可用的nginx
1.创建高可用的数据库,暂时没有学习过,这里暂不介绍。
2.创建高可用的nginx,指定虚拟ip作为统一的入口。这一条还是建议使用的,否则有三个节点,我想登录nacos管理系统则有三个地址。
nginx指定统一入口之后,登录nacos管理系统则有统一的登录地址。
而且后面服务接入nacos时,如果不用nginx指定统一入口时,服务端需要配置每个节点的地址,并用逗号分割。
我们这里高可用的nginx不做介绍了,只记录下nginx指定集群的统一入口。只是简单实现,具体nginx的知识可以去查看以往nginx学习时的记录。
1.编辑 nginx/nginx.conf 配置文档
cd /usr/local/nginx/conf
vim nginx.conf
2.在http区域中增加一个server,如下:
server {
listen 8311;
server_name localhost 127.0.0.1;
location / {
proxy_pass http://nacos/;
index index.html index.htm index.jsp;
}
}
这个server的端口号是8311,地址是localhost 或者 127.0.0.1;
它指向的地址是http://nacos/,是一个负载。
3.在http中指定负载nacos,如下:
upstream nacos {
server 127.0.0.1:8848;
server 127.0.0.1:8847;
}
4.保存nginx.conf文档之后,启动nginx
sudo /usr/local/nginx/sbin/nginx
这样当我去访问 http://localhost:8311/nacos 或者访问 http://127.0.0.1/nacos 就可以访问到nacos的后台管理系统了。
只是具体是哪个节点就由nginx负责负载处理了。