• [nacos]nacos2.x+nginx集群搭建以及过程中遇到的坑


    参考文档

    nacos官方集群部署说明
    centos7安装并配置jdk
    nacos2.x集群实现
    centos7安装mysql8
    使用nginx反代nacos报错 badrequest 400

    环境准备

    MySQL数据持久化

    为什么需要MySQL

    nacos单机模式时使用的数据库是内嵌的derby数据库,但是集群时需要做数据同步,nacos官方使用MySQL作为数据同步中心

    安装MySQL

    执行nacos_config.sql脚本创建数据库

    nacos使用

    安装nacos

    参考 Nacos最新2.x集群安装 - 简书

    1. nacos官网下载最新版本 https://github.com/alibaba/nacos/releases (使用的版本是nacos-server-2.1.1)
    2. 分别解压三次到喜欢的路径做三台集群,nacos官网说明建议三台或三台以上nacos做集群


      路径结构如下

    配置nacos

    以 nacos-8848为例, nacos-8838, nacos-8858修改对应的端口号即可

    修改conf/application.properties

    1. 解开数据库相关的注释,并修改实际的数据库名称与用户,如下
    2. 修改端口号为8848

    server.port=8848
    
    1. 在nacos-8838和nacos-8858重复以上操作

    修改conf/cluster.conf

    1. 复制cluster.conf.example并改名为cluster.conf
    mv cluster.conf.example cluster.conf
    
    1. 将三台nacos集群ip:port写入
    1. #2022-10-10T09:59:01.124
    2. 192.168.4.52:8838
    3. 192.168.4.52:8848
    4. 192.168.4.52:8858

    nginx配置反向代理与负载均衡

    配置反向代理和负载均衡

    1. http {
    2. sendfile on;
    3. keepalive_timeout 65;
    4. upstream nginx_cluster {
    5. server 192.168.4.52:8838;
    6. server 192.168.4.52:8848;
    7. server 192.168.4.52:8858;
    8. }
    9. server {
    10. listen 8888;
    11. server_name vm52.com;
    12. location / {
    13. proxy_pass http://nginx_cluster;
    14. proxy_set_header Host $http_host;
    15. }
    16. }
    17. }
    1. 需要修改server_name为自己实际情况
    2. 8888端口号可按实际情况自行选择
    3. 坑点:
    • 添加proxy_set_header Host $http_host;是为了解决无法通过vm52.com:8888/nacos访问时出现400 bad request的问题

    配置grpc

    官方说明: Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

    配置

    1. stream {
    2. upstream nacos-server-grpc {
    3. server 192.168.4.52:9838;
    4. server 192.168.4.52:9848;
    5. server 192.168.4.52:9858;
    6. }
    7. server {
    8. listen 9888;
    9. proxy_pass nacos-server-grpc;
    10. }
    11. }
    1. 其中9838 9848 9858端口是grpc请求服务端端口,由nacos端口号+1000得出, 9888是由8888端口+1000得出
    2. 坑点:
    • cluster的端口规则
    1. # 端口规则
    2. server.port(默认8848
    3. raft port: ${server.port} - 1000
    4. grpc port: ${server.port} + 1000
    5. grpc port for server: ${server.port} + 1001

    可以看到grpc用于服务间同步的端口需要+1001,这就导致在虚拟机跑三台nacos时,三台nacos的端口是不能连续的,否则会出现端口冲突问题

    编写shell脚本启动和停止nacos

    startupall.sh

    1. #!/bin/bash
    2. echo "starting nacos 8847"
    3. /usr/local/nacos/nacos-8838/bin/startup.sh
    4. echo "starting nacos 8848"
    5. /usr/local/nacos/nacos-8848/bin/startup.sh
    6. echo "starting nacos 8849"
    7. /usr/local/nacos/nacos-8858/bin/startup.sh

    shutdown.sh

    1. !/bin/bash
    2. echo "starting nacos 8847"
    3. /usr/local/nacos/nacos-8838/bin/shutdown.sh
    4. echo "starting nacos 8848"
    5. /usr/local/nacos/nacos-8848/bin/shutdown.sh
    6. echo "starting nacos 8849"
    7. /usr/local/nacos/nacos-8858/bin/shutdown.sh

    最后

    执行nacos启动脚本

    ./startupall.sh
    

    启动nginx

    ./nginx -c /usr/local/nginx/conf/nginx.conf
    

    通过8888访问nacos

  • 相关阅读:
    SpringCloud微服务(六)——Gateway路由网关
    小公司的应用服务部署历程
    Ubuntu 23.10:内网安装rapidocr_paddle(GPU)及其前置准备
    接口自动化测试(三)—— Postman读取外部数据文件(参数化)
    win环境安装Node.js的多种方式
    公积金提取一次需要间隔多长时间
    SpringMVC:整合SSM框架
    Java爬虫实战系列——常用的Java网络爬虫库
    隆重推出 Incredibuild 10
    Vue3 —— 创建 Vue3.0 工程
  • 原文地址:https://blog.csdn.net/WXF_Sir/article/details/128183087