小編給大家分享一下Nacos集群如何搭建,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)從2013年成立,先為弋江等服務(wù)建站,弋江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為弋江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
一、Nacos 簡(jiǎn)介
Nacos(Naming and Configuration Service)致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡(jiǎn)單易用的特性集,幫助您快速實(shí)現(xiàn)動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。
詳情查看Nacos 官方文檔[1]
二、Nacos 安裝
1、Nacos 依賴
Nacos 基于 java 開發(fā)的,運(yùn)行依賴于 java 環(huán)境。
依賴 64 bit JDK 1.8+,前往官網(wǎng)下載 JDK[2]
2、Nacos 安裝
下載編譯后壓縮包,最新穩(wěn)定版本[3]
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin
三、Nacos 部署
1、單實(shí)例部署
單實(shí)例部署不適合生產(chǎn)環(huán)境,單點(diǎn)故障是致命的。
Linux 單實(shí)例非集群模式啟動(dòng)命令
startup.sh -m standalone
Linux 單實(shí)例非集群模式關(guān)閉命令
shutdown.sh
訪問(wèn) nacos 管理頁(yè)面,初始化用戶名密碼均為 nacos
2、集群部署
1、集群架構(gòu)
高可用 Nginx 集群
Nacos 集群(至少三個(gè)實(shí)例)
高可用數(shù)據(jù)庫(kù)集群(取代 Nacos 內(nèi)嵌數(shù)據(jù)庫(kù))
2、本地虛擬機(jī)模擬集群部署
本地環(huán)境準(zhǔn)備
在本地 PC 機(jī)上利用 VMware workstation 虛擬出如上表所示的幾臺(tái)機(jī)器,其中 Nginx 和 MySQL 都是采用的單實(shí)例,僅做練習(xí)使用。
搭建步驟
初始化 nacos 必須的數(shù)據(jù)庫(kù)表并配置
找到 Nacos 安裝目錄下提供的數(shù)據(jù)庫(kù)腳本文件
在 MySQL 實(shí)例創(chuàng)建 nacos_config 庫(kù)并導(dǎo)入腳本
修改修改 Nacos 配置文件,指向 MySQL 實(shí)例,替換其內(nèi)嵌數(shù)據(jù)庫(kù)
#*************** 切換Nacos內(nèi)嵌數(shù)據(jù)庫(kù)平臺(tái)為MySQL ***************# spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://192.168.15.141:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=123456
說(shuō)明:三臺(tái) nacos 實(shí)例都需要切換 MySQL 平臺(tái),均需執(zhí)行以上操作
nacos 集群配置
復(fù)制 cluster.conf 文件
Nacos 集群配置,修改 cluster.conf 文件
[root@localhost conf]# vim ./cluster.conf #it is ip #example 192.168.15.145 192.168.15.147 192.168.15.148
說(shuō)明:三臺(tái) nacos 實(shí)例都需要做以上集群配置,至此關(guān)于 nacos 的配置結(jié)束了,可以嘗試以集群模式啟動(dòng)三個(gè) nacos 實(shí)例了
以集群模式分別啟動(dòng)三個(gè) nacos 實(shí)例
嘗試訪問(wèn) nacos 管理頁(yè),測(cè)試三個(gè)實(shí)例是否正常
說(shuō)明:如果三個(gè)實(shí)例以集群模式正常啟動(dòng),那么分別訪問(wèn)三個(gè)實(shí)例的管理頁(yè)就是展示以上登錄頁(yè)了。如果不能訪問(wèn),則可能防火墻未開放 nacos 服務(wù)的端口,可執(zhí)行如下命令。
[root@localhost bin]# firewall-cmd --add-port=8848/tcp --permanent success [root@localhost bin]# firewall-cmd --reload success [root@localhost bin]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: 27017/tcp 8848/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@localhost bin]#
Nginx 配置
Nginx 安裝參考,Nginx 源碼安裝[4]
修改 Nginx 配置文件 nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #nacos集群負(fù)載均衡 upstream nacos-cluster { server 192.168.15.145:8848; server 192.168.15.147:8848; server 192.168.15.148:8848; } server { listen 80; server_name 192.168.15.146; location / { #root html; #index index.html index.htm; proxy_pass http://nacos-cluster; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
啟動(dòng) Nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
微服務(wù)配置
微服務(wù)父 pom 配置
4.0.0 com.atguigu.springcloud cloud2020 1.0-SNAPSHOT pom cloud-alibaba-nacos-config-client-3377 UTF-8 1.8 1.8 4.12 1.2.17 1.16.18 5.1.47 1.1.16 1.3.0 org.springframework.boot spring-boot 2.2.2.RELEASE pom import org.springframework.cloud spring-cloud-dependencies Hoxton.SR1 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2.1.0.RELEASE pom import mysql mysql-connector-java ${mysql.version} com.alibaba druid ${druid.version} org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis.spring.boot.version} junit junit ${junit.version} log4j log4j ${log4j.version} org.projectlombok lombok ${lombok.version} org.springframework.boot spring-boot-maven-plugin true true
微服務(wù) pom 依賴
cloud2020 com.atguigu.springcloud 1.0-SNAPSHOT 4.0.0 cloud-alibaba-nacos-config-client-3377 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true
微服務(wù) bootstrap.yml 配置
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: #server-addr: my.nacos.com:8848 #nacos集群配置(Nginx) server-addr: 192.168.15.146:80 config: #server-addr: my.nacos.com:8848 #nacos集群配置(Nginx) server-addr: 192.168.15.146:80 #指定yaml格式的配置 file-extension: yaml #指定分組 group: DEV_GROUP #指定命名空間ID namespace: my_nacos_namespace
微服務(wù)啟動(dòng)類配置
package com.atguigu.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 { public static void main(String[] args) { SpringApplication.run(NacosConfigClientMain3377.class, args); } }
微服務(wù) Controller 讀取 nacos 配置
package com.atguigu.springcloud.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j @RefreshScope //支持Nacos的動(dòng)態(tài)刷新功能 public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
在 nacos 管理頁(yè)上維護(hù)一個(gè)配置
本地啟動(dòng)微服務(wù)并訪問(wèn)
以上是“Nacos集群如何搭建”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!