Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos支持三种部署模式
- 单机模式 - 用于测试和单机试用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
一、Nacos下载安装:
nacos官方文档:https://nacos.io/zh-cn/docs/quick-start.html
nacos官网下载:https://github.com/alibaba/nacos/releases
1、版本选择:
您可以在Nacos的官网下载(上边连接)中找到每个版本支持的功能的介绍,当前推荐的稳定版本为1.4.1。
2、预备环境准备:
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;
- Maven 3.2.x+;
- 集群需要依赖mysql,单机可不必
- 3个或3个以上Nacos节点才能构成集群。
3、下载源码或者安装包:
[root@bogon ~]# mkdir /usr/local/soft/nacos
[root@bogon ~]# cd /usr/local/soft/nacos
[root@bogon nacos]# wget https://github.com/alibaba/nacos/releases/download/1.4.1/nacos-server-1.4.1.tar.gz
解压nacos:
[root@bogon nacos]# tar -zxvf nacos-server-1.4.1.tar.gz
二、单击模式运行:
1、配置mysql数据库(默认使用的是嵌入式数据库Apache Derby
来存储数据,单击模式可不用配置数据库):
(1) 单机模式支持mysql,编辑application.properties文件
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
- 1.安装数据库,版本要求:5.6.5+
- 2.初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
- 3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
[root@bogon nacos]# vim /usr/local/soft/nacos/nacos/conf/application.properties
光标下移到spring.datasource.platform=mysql,键盘输入 “i” 进入编辑模式:
放开spring.datasource.platform=mysql前面的#,
放开db.num=1,db.url.0=,db.user.0,db.password.0=,前面的#。
根据自己的数据库和账号、密码进行配置,图下图:
键盘 ESC 键 退出编辑模式,键盘输入“:wq” 保存并退出。
备注:db.num=1 只有一个数据源,根据自身的数据源个数进行配置。
(2)创建数据库(上图中的数据库名为nacos_config):
mysql创建数据库:nacos_config
打开nacos/conf/nacos-mysql.sql文件,将sql语句拷贝到mysql数据库,执行。
2、运行nacos:
[root@bogon nacos]# cd /usr/local/soft/nacos/nacos/bin
[root@bogon bin]# sh startup.sh -m standalone
备注:startup.sh是linux系统的启动执行文件,windows下使用startup.cmd。-m 表示:启动模式。standalone 表示单机模式。 后边不带-m standalone 参数时默认使用集群模式启动。
3、防火墙开放端口(默认的是8848):
[root@bogon bin]# firewall-cmd --zone=public --add-port=8848/tcp --permanent
防火墙重起:
[root@bogon bin]# firewall-cmd --reload
4、通过ui查看是否部署成功:
浏览器输入:http://ip:8848/nacos/ 账号:nacos 密码:nacos
三、集群模式运行 --- 生产模式:
准备三台服务器,都下载nacos的安装包,且都进行以下1和2的配置(可先配置好一台,其他的进行直接拷贝即可)
1、配置集群配置文件:
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf.example,这是官网给的模板文件,重建cluster.conf文件或者直接更换模板文件的名称,删除.example即可。请每行配置成ip:port。(请配置3个或3个以上节点):
[root@bogon bin]# cd /usr/local/soft/nacos/nacos/conf
[root@bogon conf]# cp cluster.conf.example cluster.conf
编辑cluster.conf文件:
[root@bogon conf]# vim /usr/local/soft/nacos/nacos/conf/cluster.conf
光标下移,键盘输入 “i” 进入编辑模式:
把三个默认的ip和端口进行修改,修改为自己的三个nacos服务ip以及端口,建议三台nacos服务都在不同的服务器上,这样才能真正达到集群高可用。
如下图所示:
备注:由于我只有一台服务器,暂且用不同的端口来实现吧,生产环境不建议。
键盘 ESC 键 退出编辑模式,键盘输入“:wq” 保存并退出。
2、配置mysql数据库:
和单机模式的数据源配置相同(上边单机模式的第一步),这里不再重复。
3、再拷贝2个nacos服务(当前是在同一台机器上,生产环境不建议):
[root@bogon ~]# cp -a /usr/local/soft/nacos/nacos /usr/local/soft/nacos/nacos8847
[root@bogon ~]# cp -a /usr/local/soft/nacos/nacos /usr/local/soft/nacos/nacos8849
备注:当前是在同一台服务器上,使用不用的端口号来区分,所以需要修改相应地端口号,配置文件在nacos/conf/的application.properties文件,此处修改省略。
4、启动服务(三个服务都启动):
[root@bogon nacos]# cd /usr/local/soft/nacos/nacos/bin
使用内置数据源(没有配置自己的mysql数据源)
[root@bogon bin]# sh startup.sh -p embedded
使用已配置的mysql数据源,集群模式启动(无-m standaone参数,默认是集群模式)
[root@bogon bin]# sh startup.sh
备注:参照以上的启动方式,启动另外两个nacos服务。
5、查询nacos启动日志:
可通过查看/conf/nacos.log(详细日志)或/conf/start.out(启动记录)查看nacos的启动情况以及运行情况(三个nacos服务的查询方式相同):
[root@bogon bin]# tail -n 200 /usr/local/soft/nacos/nacos/logs/start.out
如下图所示:
上边的信息说明集群模式启动成功。
6、防火墙开放端口:
三台机器都要防火墙开放端口,此处和单机的模式相同,此处省略。
7、访问nacos:
通过浏览器访问三台nacos:
http://192.168.30.110:8847/nacos
http://192.168.30.110:8848/nacos
http://192.168.30.110:8849/nacos
登录账号:nacos 密码:nacos
三个页面显示如下:
登录以后,查看集群信息:
8、生产者、消费者连接nacos:
(1)直连ip模式:
项目中的bootstrap.yml文件,添加一下内容:
spring: application: name: test-producer cloud: nacos: discovery: server-addr: http://192.168.30.110:8847,http://192.168.30.110:8848,http://192.168.30.110:8849 # 直连ip模式 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} file-extension: yaml
以上的模式,实质不是真正的集群模式,客户端需要指向所有nacos的ip,如果其中由同一台nacos宕机,那么生产者或消费者就一直在报连接超时问题(虽然不影响使用)。
(2)使用nginx配置真正的集群(nginx起到负载均衡的效果,推荐使用):
- 下载nginx:
[root@bogon bin]# mkdir /usr/local/soft/nginx [root@bogon bin]# cd /usr/local/soft/nginx [root@bogon nginx]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
- 安装nginx以及所需依赖:
[root@bogon nginx]# yum install gcc-c++ # 编译依赖 gcc 环境 可使用 gcc -v 命令查询系统是否安装了gcc,如果已安装,这里可省略
[root@bogon nginx]# yum install -y pcre pcre-devel # 安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码
[root@bogon nginx]# yum install -y zlib zlib-devel # zlib库提供了压缩算法,在nginx的各种模块中需要使用gzip压缩
[root@bogon nginx]# yum install -y openssl openssl-devel # nginx支持 http协议,还支持 https(即在 ssl 协议上传输 http),如果使用了https,需要安装 OpenSSL 库
[root@bogon nginx]# tar -zxvf nginx-1.18.0.tar.gz # 解压nginx安装包
[root@bogon nginx]# cd nginx-1.18.0 # 进入nginx-1.18.0目录
[root@bogon nginx-1.18.0]# ./configure # 使用默认配置
[root@bogon nginx-1.18.0]# make # 当前目录进行编译,观察是否有报错,如有报错,查看上边的依赖是否安装成功
[root@bogon nginx-1.18.0]# make install # 编译安装
执行完以上操作,/usr/local/下回多一个nginx文件夹,这是默认的安装路径。
- nginx配置代理转发规则:
进入nginx的安装目录,编辑nginx.conf文件:
[root@bogon nginx-1.18.0]# vim /usr/local/nginx/conf/nginx.conf
光标下移,键盘输入 “i” 进入编辑模式,找到server位置,替换一下内容:
upstream nacos_server { # 这里负载均衡,默认的分发策略是线性轮询 server 192.168.30.110:8847; # 三个nacos服务器的ip和端口 server 192.168.30.110:8848; server 192.168.30.110:8849; } server { listen 8846; # 修改nginx监听的端口为8846 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://nacos_server; # 这个是代理的地址,名字和上边定义的upstream 后边的名字匹配
proxy_set_header Host $host; # 避免http请求中丢失Host头部的情况下Host不被重写的失误,此处很重要,一开始没有此配置时,一直连接不上,同时nginx也打不开。
# root html;
# index index.html index.htm;
}
键盘 ESC 键 退出编辑模式,键盘输入“:wq” 保存并退出。
- 启动nginx:
[root@bogon nginx-1.18.0]# cd /usr/local/nginx/sbin [root@bogon sbin]# ./nginx
- nginx常用命令:
启动nginx: cd /usr/local/nginx/sbin ./nginx 关闭nginx: cd /usr/local/nginx/sbin ./nginx -s quit 或者 ./nginx -s stop 重启nginx: cd /usr/local/nginx/sbin ./nginx -s reload 查看nginx运行状态: ps aux|grep nginx 查看nginx服务器日志: tail -fn 200 /usr/local/nginx/logs/access.log
防火墙开放端口:
[root@bogon sbin]# firewall-cmd --zone=public --add-port=8846/tcp --permanent
防火墙重起:
[root@bogon sbin]# firewall-cmd --reload
浏览器访问nginx:http://192.168.30.110:8846/nacos
- 生产者、消费者项目中的bootstrap.yml文件,添加一下内容:
spring: application: name: test-producer cloud: nacos: discovery: server-addr: http://192.168.30.110:8846 # 直接连接nginx,通过nginx实现集群的代理 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} file-extension: yaml
- 启动生产者或消费者,
浏览器访问nginx : http://192.168.30.110:8846/nacos
浏览器访问nacos-8847: http://192.168.30.139:8847/nacos
浏览器访问nacos-8848: http://192.168.30.139:8848/nacos
浏览器访问nacos-8849: http://192.168.30.139:8849/nacos
观察 服务管理 --》服务列表 都存在了微服务的注册信息。
至此 nacos的安装以及集群配置到此结束!