关于Nacos已经展开了四篇入门文章:

初探Nacos(一)-- 单机模式启动

初探Nacos(二)-- SpringCloud使用Nacos的服务注册与发现

初探Nacos(三)-- SpringBoot下整合Dubbo和Nacos

初探Nacos(四)-- SpringBoot下使用Nacos作为配置中心

今天,我们开始进一步探索Nacos的使用,分布式集群模式部署Nacos。(另外,目前的Nacos1.0.0稳定版已发布,目前测试暂没有发现问题,我们重新使用1.0.0来演示。)

当然,我们仍然参考官方文档:集群部署说明,由于集群模式需要用到数据库,此处我们默认你已安装好Mysql数据库, 然后我们到https://github.com/alibaba/nacos/releases下载最新的安装包。

wget https://github.com/alibaba/nacos/releases/download/1.0.0/nacos-server-1.0.0.zip
复制代码

unzip nacos-server-1.0.0.zip

cd nacos

cp conf/cluster.conf.example conf/cluster.conf

需要配置3个或3个以上节点,生产环境建议分布在多台服务器上,目前咱们仅在一台机器上测试。

vi conf/cluster.conf

127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850
复制代码

然后进入mysql,创建名为nacos_config的数据库 ,导入config/nacos-mysql.sql。(此处测试暂时使用单机数据库,建议生产环境采用主从等高可模式)

建完数据库完后,官方文档上默认使用的是内嵌的cmdb数据库,没有Mysql数据库的配置,有点让人懵逼的,百度了一下,找到了配置。

vi conf/application.properties

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=数据库用户名
db.password=数据密码
复制代码

另外,由于我们在一台机器上跑三个,因此启动脚本和关闭脚本需要做一点修改。

cp bin/startup.sh bin/startup-port.sh

vi bin/startup-port.sh

export MODE="cluster"
export FUNCTION_MODE="all"
export SERVER_PORT="8848"
while getopts ":m:f:p:" opt
do
case $opt in
m)
MODE=$OPTARG;;
f)
FUNCTION_MODE=$OPTARG;;
p)
SERVER_PORT=$OPTARG;;
?)
echo "Unknown parameter"
exit 1;;
esac
done
JAVA_OPT="${JAVA_OPT} -Dserver.port=${SERVER_PORT}"
复制代码

cp bin/shutdown.sh bin/shutdown-port.sh

vi bin/shutdown-port.sh

PORT=$1
if [ ! $PORT ]; then
echo "please select stop port!" >&2
exit 1
fi pid=`ps ax | grep -i 'nacos.nacos' |grep java |grep ${PORT} | grep -v grep | awk '{print $1}'`
复制代码

启动方式如下:

sh bin/startup-port.sh -p 8848

sh bin/startup-port.sh -p 8849

sh bin/startup-port.sh -p 8850

关闭方式如下:

sh bin/shutdown-port.sh 8848

sh bin/shutdown-port.sh 8849

sh bin/shutdown-port.sh 8850

启动后就可以在浏览器打开 http://127.0.0.1:8848/nacos/,http://127.0.0.1:8849/nacos/,http://127.0.0.1:8850/nacos/ 即可看到控制台,默认用户名/密码为nacos/nacos。

附1: 可通过Nginx配置只访问一个地址负载均衡到三个节点上:

upstream nacos-cluster{
server 127.0.0.1:8848;
server 127.0.0.1:8849;
server 127.0.0.1:8850;
}
复制代码

附2:集群模式下控制台的用户名密码都存在了数据库的users表,用户名直接修改就行,密码需要用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder加密。

然后我们就可以在演示项目里尝试,只需在application.properties里将配置由单机模式改成集群模式:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
复制代码

配置中心的配置需要修改如下:

nacos.config.server-addr=127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
复制代码

dubbo的配置需要修改如下:

dubbo.registry.address=nacos://127.0.0.1:8848?backup=127.0.0.1:8849,127.0.0.1:8850
复制代码

启动项目后,可以测试到服务注册与发现、配置中心等均能像单机模式一样正常使用。我们可以尝试关闭其中一个或两个nacos,仍然不影响系统的正常运行。

转自:https://juejin.im/post/5cbad19ef265da038b20165e

【Nacos】本地集群部署的更多相关文章

  1. mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析、统计功能,此外还支持本地集群部署管理.

    mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析.统计功能,此外还支持本地集群部署管理 https://www.cnblogs.com/littleatp/p/9 ...

  2. Spring Cloud Alibaba基础教程:Nacos的集群部署

    继续说说生产环境的Nacos搭建,通过上一篇<Spring Cloud Alibaba基础教程:Nacos的数据持久化>的介绍,我们已经知道Nacos对配置信息的存储原理,在集群搭建的时候 ...

  3. Nacos Docker集群部署

    参考文档:https://nacos.io/zh-cn/docs/quick-start-docker.html 1.从git上下载nacos-docker项目,本地目录为/docksoft/naco ...

  4. Nacos(九):Nacos集群部署和遇到的问题

    前言 前面的系列文章已经介绍了Nacos的如何接入SpringCloud,以及Nacos的基本使用方式 之前的文章中都是基于单机模式部署进行讲解的,本文对Nacos的集群部署方式进行说明 环境准备 J ...

  5. nacos集群部署

    对于nacos的集群部署,建议大家参考nacos官网进行,地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 下面是我自己部署na ...

  6. Alibaba Nacos 服务发现组件集群部署

    前面学习了单机模式下的启动,生产环境中部署nacos肯定是使用集群模式cluster保证高可用. 官方文档的集群部署推荐使用VIP+域名模式,把所有服务列表放到一个vip下面,然后挂到一个域名下面. ...

  7. Spring Eureka 本地Docker集群部署

    故事背景 最近因为产线使用的服务与发现服务,使用的是Spring Cloud Eureka集群部署,为了以后调试产线的问题,想在本地搭建和产线一样的环境.产线的所有服务都是基于K8s和Docker部署 ...

  8. 为Kubernetes集群部署本地镜像仓库

    目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...

  9. Spring Cloud Alibaba | Nacos集群部署

    目录 Spring Cloud Alibaba | Nacos集群部署 1. Nacos支持三种部署模式 2. 集群模式下部署Nacos 2.1 架构图 2.2 下载源码或者安装包 2.3 配置集群配 ...

随机推荐

  1. Mysql中存储过程和函数的写法

    MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine ...

  2. boost库:智能指针

    1. C98里的智能指针 std::auto_ptr ,本质上是一个普通的指针,通过地址来访问你一个动态分配的对象,初始化时需要传递一个由new操作符返回的对象地址. std::auto_ptr的析构 ...

  3. 【unp】unix网络编程卷1-->环境搭建(ubuntu14.04)

    学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置. 1. 到资源页下载unpv13e 2. 解压并将unpv13e 移动到相应的文件夹下 ...

  4. 6.zabbix微信告警3.2

    原文地址: https://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/ pdf : 链接: ht ...

  5. ASP.NET MVC 分页之 局部视图

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  6. vue之slot用法

    slot元素作为组件模板之中的内容分发插槽.这个元素自身将被替换. 有 name 特性的 slot 称为具名 slot. 有 slot 特性的内容将分发到名字相匹配的具名 slot. 一.单个组件 如 ...

  7. 百度之星资格赛2018B题-子串查询

    子串查询 题目 度度熊的字符串课堂开始了!要以像度度熊一样的天才为目标,努力奋斗哦! 为了检验你是否具备不听课的资质,度度熊准备了一个只包含大写英文字母的字符串 A[1,n]=a1a2⋯an,接下来他 ...

  8. python学习笔记:json与字典的转换(dump 和dumps load和loads的区别)

    1. json序列化(字典转成字符串)方法: dumps:无文件操作            dump:序列化+写入文件 2. json反序列化(字符串转成字典)方法: loads:无文件操作     ...

  9. charles使用教程

    概述 Charles是目前最强大的http调试工具,在界面和功能上远胜于Fiddler,同时是全平台支持.是收费软件,可以试用15分钟,下面提供了破解方法.   安装破解 https://www.cn ...

  10. Python中反射的简单应用

    ● 共两个文件:userInfo,reflex.py alex|123456|Manager hezewei|666|Student taibai|2222|Teachar userInfo #!/u ...