# nacos 部署 **Repository Path**: ease-meta/nacos-install ## Basic Information - **Project Name**: nacos 部署 - **Description**: nacos 单机/集群,虚拟机/容器 部署 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-04-18 - **Last Updated**: 2023-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Nacos 部署 #### 一. Docker 方式部署 ##### 1. 安装 Docker 环境 bash <(curl -sSL https://dwz.cn/XOJj0Njx) -i docker bash <(curl -sSL https://dwz.cn/XOJj0Njx) -i compose ##### 2. Docekr 单机模式部署(embedded) cd nacos-standalone docker-compose up -d ##### 3. Docekr 集群部署(embedded) cd nacos-cluster-embedded docker-compose up -d ##### 4. Docekr 集群部署(mysql) cd nacos-cluster-mysql docker-compose up -d #### 二. 虚拟机方式部署 ##### 1. 安装 JDK 环境 # 创建 jdk 安装目录 mkdir -p /usr/java # 下载解压 jdk 安装包 curl --progress-bar https://oss.hc-yun.com/mango_soft/jdk-8u211-linux-x64.tar.gz | tar xz -C /usr/java # 配置 jdk 环境变量 cat > /etc/profile.d/jdk.sh <<'EOF' export JAVA_HOME=/usr/java/jdk1.8.0_211 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH EOF ##### 2. 单机模式部署(embedded) # 下载解压 nacos 安装包 curl --progress-bar https://ghproxy.com/https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz | tar xz -C /home # 创建 nacos 服务 source /etc/profile.d/jdk.sh cat > /usr/lib/systemd/system/nacos.service < 1.Nacos 安装配置 # 下载解压 nacos 安装包 curl --progress-bar https://ghproxy.com/https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz | tar xz -C /home # 配置 nacos (将集群内各节点服务IP与端口写入配置文件) cat > /home/nacos/conf/cluster.conf <<'EOF' # ip:port 192.168.10.71:8848 192.168.10.72:8848 192.168.10.73:8848 EOF # 创建 nacos 服务 source /etc/profile.d/jdk.sh cat > /usr/lib/systemd/system/nacos.service < 2.Nginx 安装配置 # 下载解压 nginx 安装包 curl -s http://oss.hc-yun.com/mango_soft/nginx-1.22.0.rpm.tgz | tar xz -C /tmp # 安装 nginx rpm -ivh /tmp/nginx-1.22.0/*.rpm # 清理安装 rm -rf /tmp/nginx-1.22.0 /etc/nginx/conf.d/* # 创建服务端口代理(http 8848) cat > /etc/nginx/conf.d/proxy_nacos.conf <<'EOF' upstream nacos_http { server 192.168.10.71:8848 fail_timeout=100s max_fails=10; server 192.168.10.72:8848 fail_timeout=100s max_fails=10; server 192.168.10.73:8848 fail_timeout=100s max_fails=10; } server { listen 80; server_name localhost; error_log /var/log/nginx/nacos.error.log; access_log /var/log/nginx/nacos.access.log; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://nacos_http; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } EOF # nginx 配置 tcp 代理 cat >> /etc/nginx/nginx.conf <<'EOF' stream { log_format tcpproxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; # tcp 代理 include /etc/nginx/tcp.d/*.conf; } EOF # 创建服务端口代理(tcp 9848) mkdir -p /etc/nginx/tcp.d cat > /etc/nginx/tcp.d/nacos.conf <<'EOF' upstream nacos_grpc { server 192.168.10.71:9848; server 192.168.10.72:9848; server 192.168.10.73:9848; } server { listen 1080; proxy_pass nacos_grpc; proxy_connect_timeout 1h; proxy_timeout 1h; error_log /var/log/nginx/nacos.grpc.error.log; access_log /var/log/nginx/nacos.grpc.access.log tcpproxy; } EOF # 启动 nginx 服务 && 配置 nginx 服务开机自启动 systemctl daemon-reload systemctl enable --now nginx.service ##### 4. 集群模式部署(mysql) - mysql 节点IP: 192.168.10.75 - nginx 节点IP: 192.168.10.74 - nacos 节点IP: 192.168.10.71 192.168.10.72 192.168.10.73 > 1.MySQL 安装配置 # 安装依赖包 yum install -y wget libaio perl numactl-libs # 卸载 mariadb-libs yum remove -y mariadb-libs # 下载解压 mysql 安装包 mkdir -p /home/mysql-5.7.39 curl --progress-bar https://oss.hc-yun.com/lanmei/soft/mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar | tar x -C /home/mysql-5.7.39 # 安装 mysql rpm -ivh /home/mysql-5.7.39/mysql-community-common-5.7.39-1.el7.x86_64.rpm rpm -ivh /home/mysql-5.7.39/mysql-community-libs-5.7.39-1.el7.x86_64.rpm rpm -ivh /home/mysql-5.7.39/mysql-community-libs-compat-5.7.39-1.el7.x86_64.rpm rpm -ivh /home/mysql-5.7.39/mysql-community-client-5.7.39-1.el7.x86_64.rpm rpm -ivh /home/mysql-5.7.39/mysql-community-devel-5.7.39-1.el7.x86_64.rpm rpm -ivh /home/mysql-5.7.39/mysql-community-server-5.7.39-1.el7.x86_64.rpm # 初始化 mysql mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --ssl # 启动 mysql 服务 && 配置 mysql服务开机自启动 systemctl enable --now mysqld systemctl restart mysqld # 初始化 root 账号 mysql -e "grant all on *.* to 'root'@'%' identified by 'emFxMUBXU1h4' with grant option;" # 创建 nacos 数据库 mysql -e 'create database if not exists nacos default charset = utf8mb4 collate = utf8mb4_general_ci;' # 下载 && 导入 nacos sql curl --progress-bar -O https://ghproxy.com/https://raw.githubusercontent.com/alibaba/nacos/master/distribution/conf/mysql-schema.sql mysql nacos < ./mysql-schema.sql # 创建 nacos 用户 && 授权 mysql -e "CREATE USER 'nacos'@'%' IDENTIFIED BY 'emFxMUBXU1h4';" mysql -e "GRANT ALL ON nacos.* TO 'nacos'@'%';" mysql -e "SHOW GRANTS FOR 'nacos'@'%';" > 2.Nacos 安装配置 # 下载解压 nacos 安装包 curl --progress-bar https://ghproxy.com/https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz | tar xz -C /home # 配置 nacos 数据库 cat >> /home/nacos/conf/application.properties < /home/nacos/conf/cluster.conf <<'EOF' # ip:port 192.168.10.71:8848 192.168.10.72:8848 192.168.10.73:8848 EOF # 创建 nacos 服务 source /etc/profile.d/jdk.sh cat > /usr/lib/systemd/system/nacos.service < 3.Nginx 安装配置 # 下载解压 nginx 安装包 curl -s http://oss.hc-yun.com/mango_soft/nginx-1.22.0.rpm.tgz | tar xz -C /tmp # 安装 nginx rpm -ivh /tmp/nginx-1.22.0/*.rpm # 清理安装 rm -rf /tmp/nginx-1.22.0 /etc/nginx/conf.d/* # 创建服务端口代理(http 8848) cat > /etc/nginx/conf.d/proxy_nacos.conf <<'EOF' upstream nacos_http { server 192.168.10.71:8848 fail_timeout=100s max_fails=10; server 192.168.10.72:8848 fail_timeout=100s max_fails=10; server 192.168.10.73:8848 fail_timeout=100s max_fails=10; } server { listen 80; server_name localhost; error_log /var/log/nginx/nacos.error.log; access_log /var/log/nginx/nacos.access.log; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://nacos_http; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } EOF # nginx 配置 tcp 代理 cat >> /etc/nginx/nginx.conf <<'EOF' stream { log_format tcpproxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; # tcp 代理 include /etc/nginx/tcp.d/*.conf; } EOF # 创建服务端口代理(tcp 9848) mkdir -p /etc/nginx/tcp.d cat > /etc/nginx/tcp.d/nacos.conf <<'EOF' upstream nacos_grpc { server 192.168.10.71:9848; server 192.168.10.72:9848; server 192.168.10.73:9848; } server { listen 1080; proxy_pass nacos_grpc; proxy_connect_timeout 1h; proxy_timeout 1h; error_log /var/log/nginx/nacos.grpc.error.log; access_log /var/log/nginx/nacos.grpc.access.log tcpproxy; } EOF # 启动 nginx 服务 && 配置 nginx 服务开机自启动 systemctl daemon-reload systemctl enable --now nginx.service ### 监控 nacos [Nacos 监控手册](https://nacos.io/zh-cn/docs/v2/guide/admin/monitor-guide.html) #### 1. Nacos 暴露 metrics 数据 sed -i '/management.endpoints.web.exposure.include/s/^#//' /home/nacos/conf/application.properties #### 2. 修改 prometheus 配置, 采集 Nacos metrics 数据 # example 1 metrics_path: '/nacos/actuator/prometheus' static_configs: - targets: - 192.168.10.71:8848 - 192.168.10.72:8848 - 192.168.10.73:8848 # example 2 metrics_path: '/nacos/actuator/prometheus' static_configs: - targets: ['192.168.10.71:8848','192.168.10.72:8848','192.168.10.73:8848'] #### 3. Nacos grafana监控模版 https://github.com/nacos-group/nacos-template/blob/master/nacos-grafana.json