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

news2024/10/7 12:18:39

参考文档

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

环境准备

  • vmware虚拟机上跑的centos7 (原本内存2g 坑点之一!2g内存无法启动三台nacos集群,官方说明需要4g)
  • centos7安装并配置jdk8
    • 安装教程参考 centos7卸载自带jdk并安装新的jdk - 腾讯云开发者社区-腾讯云
  • centos7手动编译安装nginx (笔者使用的版本是1.20.2)
    • nginx: download
    • 安装教程参考 CentOS 7 安装 Nginx - 掘金
  • centos7安装mysql (笔者使用的版本是8.0.30)

MySQL数据持久化

为什么需要MySQL

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

安装MySQL

  • centos7默认yum源不包含MySQL而是mariadb,所以通过rpm安装MySQL
  • 参考博客 CentOS 7安装MySQL8.0 - 简书

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

  • 脚本下载 nacos/mysql-schema.sql at develop · alibaba/nacos · GitHub
  • 创建nacos_config库并执行脚本即可

  • 笔者参考其他教程时发现nacos官方github对此文件做过rename,不排除之后也会有rename的可能,请自行到nacos github查看最新版本

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写入
#2022-10-10T09:59:01.124
192.168.4.52:8838
192.168.4.52:8848
192.168.4.52:8858

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

配置反向代理和负载均衡

http {
    sendfile on;
    keepalive_timeout 65;
    upstream nginx_cluster {
        server 192.168.4.52:8838;
        server 192.168.4.52:8848;
        server 192.168.4.52:8858;
    }

    server {
        listen 8888;
        server_name vm52.com;
        
        location / {
            proxy_pass http://nginx_cluster;
            proxy_set_header Host $http_host;
        }
    }
}
  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)基础上,进行一定偏移量自动生成。

配置

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

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

编写shell脚本启动和停止nacos

startupall.sh

#!/bin/bash
echo "starting nacos 8847"
/usr/local/nacos/nacos-8838/bin/startup.sh
echo "starting nacos 8848"
/usr/local/nacos/nacos-8848/bin/startup.sh
echo "starting nacos 8849"
/usr/local/nacos/nacos-8858/bin/startup.sh

shutdown.sh

!/bin/bash
echo "starting nacos 8847"
/usr/local/nacos/nacos-8838/bin/shutdown.sh
echo "starting nacos 8848"
/usr/local/nacos/nacos-8848/bin/shutdown.sh
echo "starting nacos 8849"
/usr/local/nacos/nacos-8858/bin/shutdown.sh

最后

执行nacos启动脚本

./startupall.sh

启动nginx

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

通过8888访问nacos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mongoose【node.js的优雅mongodb对象建模】

Mongoose基础运行流程: 文章目录Mongoose基础运行流程:官方 Docs 地址1. 安装:2. 使用:2.1 目录结构:2.2 初始化连接实例 [ 创建 DBHelper.js ]2.2.1 链接地址书写格式[ mongoose.connect(参数格式 &#x…

java计算机毕业设计ssm网络相册设计sepo8(附源码、数据库)

java计算机毕业设计ssm网络相册设计sepo8(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

机器学习笔记之受限玻尔兹曼机(四)推断任务——边缘概率

机器学习笔记之受限玻尔兹曼机——推断任务[边缘概率]引言回顾:场景构建推断任务——边缘概率求解边缘概率与Softplus函数引言 上一节介绍了受限玻尔兹曼机中随机变量节点的后验概率,本节将介绍随机变量结点的边缘概率。 回顾:场景构建 已…

木聚糖-氨基|Xylan-NH2|木聚糖-聚乙二醇-氨基|氨基-PEG-木聚糖

木聚糖-氨基|Xylan-NH2|木聚糖-聚乙二醇-氨基|氨基-PEG-木聚糖 Xylan-NH2 木聚糖-氨基 中文名称:木聚糖-氨基 英文名称:Xylan-NH2 别称:氨基修饰木聚糖,氨基-木聚糖 PEG分子量可选:350、550、750、1k、2k、34k、5…

统计学-双变量相关分析-相关系数、相关比、克莱姆相关系数

双变量相关分析根据变量的数据类型不同而不同。当数值数据和数值数据计算相关性时,指标为相关系数;数值数据和类别数据计算相关性时,指标为相关比;类别数据和类别数据计算相关性时,指标为克里姆相关系数。 1 计算公式…

基于现代深度学习的目标检测方法综述

论文地址:A Survey of Modern Deep Learning based Object Detection Models 论文结构: 一、论文亮点(与其他综述不同): 1、深度分析了两类检测方法:单步和两步检测,并从历史的角度分析&…

【covid 时间序列】基于matlab GUI冠状病毒病例、死亡、疫苗接种仿真【含Matlab源码 2262期】

一、⛄SEIR模型简介 1 SEIR模型简介 如果所研究的传染病有一定的潜伏期,与病人接触过的健康人并不马上患病,而是成为病原体的携带者,归入 E 类。此时有: 仍有守恒关系 S(t) E(t) I(t) R(t) 常数,病死者可归入 R…

Vue3 快速入门及巩固基础

1. Vue 框架介绍 2. Vue3 安装方式 3. Vue3 模板语法 4. 组件的 data 属性 5. 计算属性和方法 6. 侦听器的使用 7. class 类名绑定对象 8. class 类名绑定数组 9. style 样式绑定对象 10. style 样式绑定数组 11. 条件渲染 v-if 和 v-show 12. 列表渲染 v-for 13. …

1,2-二苯基-1,2-二(4-苄溴基苯基)乙烯;TPE-MB结构式

中文名称:1,2-二苯基-1,2-二(4-苄溴基苯基)乙烯 中文同义词:1,2-双(4-(溴甲基)苯基)-1,2-二苯乙烯; 分子式:C28H22Br2 分子量:518.28 CAS:1053241-67-0 1,2-二苯基-1,2-二(4-苄溴基苯基)乙烯化学性质 沸点 :533.545.0 C(Predicted) 密度 &#xff…

医依通小程序项目总结

一、项目介绍: 这是一个医疗类的小程序,主要用于新冠疫苗预约,HPV疫苗预约,核酸预约,和咨询等,主要作用就是方便快捷,可以在手机上进行预约挂号,和一些健康自测的功能,还…

MySQL的零拷贝技术

1.需要了解Buffer 与 cache 的区别 Bbuffer 与 Cache 非常类似,因为它们都用于存储数据数据,被应用层读取字节数据。在很多场合它们有着相同的概念: 首先从翻译上,Buffer应该翻译为“缓冲”,Cache应该翻译为“缓存”&#xff0c…

高企技术企业对企业的作用

高新技术企业认定的作用 1、促进企业科技转型 创新是企业发展的根本动力,高新技术企业认定政策是一项引导政策,目的是引导企业调整产业结构,走自主创新、持续创新的发展道路,激发企业自主创新的热情,提高科技创新能力…

堆排序(大根堆与小根堆)

(1)是什么? 是一种适用于关键字较多的情况下的排序算法,例如在十亿个数中选出前1000个最大值或者最小值 如果在传统的排序算法中(例如冒泡,插入等),我们习惯把目标数据整体进行一次…

Cisco ASA应用——NAT的类型

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.NAT的类型 1.动态NAT 2.静态NAT 3.静态PAT 4.动态PAT 前言…

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析

在 2022 云栖大会龙蜥峰会云原生专场上,来自爱奇艺的基础架构研究员赵慰分享了《基于龙蜥与 Koordinator 的在离线混部实践》技术演讲,以下为本次演讲内容: 一、爱奇艺离线业务混部背景 与众多互联网公司一样,爱奇艺常见的负载类…

WSN final fighting 12.05

0.网络时间协议(NTP) p54 1.Min-Max定位 p63 2.质心算法定位 p64 3.覆盖修复过程 p95 4.数据融合的卡尔曼滤波法 p72 5.数据融合的神经网络算法 p73 6.TMAC协议 p135 7.基于分分簇网络的MAC协议 p140 8.蓝牙协议 p170 9.GEM路由协议 p206 10.MECN路由协议 p206 11.阐…

INTERSPEECH 2022——基于层级上下文语义信息的多尺度语音合成风格建模

本文由清华大学与虎牙信息科技有限公司、元象唯思控股(深圳)有限公司和香港中文大学合作。 人类语音的风格表达是多尺度的,不仅包括全局尺度的情感表达,还包括局部尺度的韵律表达。 而现有关于表现力语音合成的工作只考虑了单一尺…

C++ 静态成员变量与静态成员函数

在C的类中&#xff0c;有静态成员变量和静态成员函数 #include <iostream> #include <string>using namespace std;class test { private:static int m_value; //定义类的静态成员变量public:static int getValue() //定义类的静态成员函数{return m_value;} };in…

Mybatis-Plus中的and和or用法

先看Mybatis-Plus官网中对这两个关键字用法的介绍 数据库文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1KzY32Jq0srDQU9m-a-YtBQ?pwdrsdg 提取码&#xff1a;rsdg 表数据&#xff1a; 比如我们想查age等于23并且school_id等于300的 sql语句为&#xff1a;select…

FL Studio 20音乐制作教程

FL Studio 20音乐制作教程 FL Studio 20 中的音乐制作 – 制作 3 首完整曲目 – 只需一天即可管理 FL Studio&#xff0c;音乐、混音和母带制作 课程英文名&#xff1a;FL Studio 20 Music Production In FL Studio for Mac & PC 此视频教程共20.0小时&#xff0c;中英双…