Nacos
Nacos
Nacos,可以作为微服务中的服务注册中心(原Eureka),也可以作为配置中心
官网:https://nacos.io/en-us/
下载:https://github.com/alibaba/nacos/releases
启动:运行解压后bin目录下的startup脚本
关闭:运行解压后bin目录下的shutdown脚本
访问:http://localhost:8848/nacos
登录:用户名密码初始都是
nacos
默认端口号
注意:startup.cmd(startup.sh)脚本,默认是集群启动(cluster),需要修改其文件中的MODE
(rem 是注释符号)rem set MODE="cluster" set MODE="standalone"
数据持久化
将数据库存储到MySQL中(搭建Nacos集群时需要)。
-
关闭Nacos服务,修改配置文件
application.properties
(先备份一份)- 打开
application.properties
- 找到文字内容:
Config Module Related Configurations
,修改它下面的配置
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=youdontknow
以上配置,配置文件中都已经注释好了,只需要删除注释,并适当的修改内容,如数据库url,用户名和密码即可
- 打开
-
测试,我们新创建一个用户(用户名和密码都是root)。
- 生产密码,官网的原文如下
生成加密密码, 在
com.alibaba.nacos.console.utils.PasswordEncoderUtil.main
函数中,将 nacos 改成你要改成的密码,运行即可得到加密有算法。注意盐值是随机的,所以生成密码每次可能不一样,请不要担心。因为使用的是Spring Security,所以我们也可以自己引入spring security的包,自己生成,如下:
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; public class TestDemo { public static void main(String[] args) { System.out.println(new BCryptPasswordEncoder().encode("root")); } } // $2a$10$SH8W0WUaiDG4psmZdMRmzOA4hZJxKfohFhhaFEfEBm2XYLxU3a9D6
本次,我的数据库是
MySQL8.0.16
,在之前的Nacos版本,启动是会报错的。 好了,现在数据持久化我们就解决了,接下来我们需要进行集群的搭建。
集群搭建
注意:需要将启动脚本文件(startup.cmd/startup.sh)中的MODE修改为集群模式(cluster)
set MODE="cluster"
或者在启动时指定 -m
选项带上参数 startup.cmd -m cluster
配置集群配置文件
-
在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)
将文件
cluster.conf.example
拷贝一份,改名叫cluster.conf
, 其文件内容格式如下:
192.168.16.101:8847
192.168.16.101:8848
192.168.16.101:8849 -
将windows的nacos文件复制三份,分别修改其下的application.properties文件的端口号,然后分别启动。(自己尝试了修改脚本,没改好)
-
使用Nginx进行负载均衡
upstream nacos_proxy{ ip_hash; #每个请求按照ip的hash结果分配,同一个ip的访客固定访问一个后端服务器 server 192.168.0.135:8847; server 192.168.0.135:8848; server 192.168.0.135:8849; } server { listen 8888; server_name localhost; location /nacos { proxy_pass http://nacos_proxy/nacos; proxy_set_header Host $host; proxy_set_header X-Forward-For $remote_addr; } }
SpringBoot使用Nacos
- 使用Spring Cloud Alibaba,所以在父工程(聚合工程,打包方式是
pom
)pom.xml中增加 spring cloud alibaba<dependencyManagement> <dependencies> <!--spring cloud alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba-dependencies.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 其它微服务也需要引入相关的依赖:
<!--spring cloud Alibaba nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
- application.yml 配置nacos的地址
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8888 # nacos服务集群
- 启动类加上注解,启动服务发现
@EnableDiscoveryClient // 启动服务发现 @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78262.html