init
This commit is contained in:
commit
600ce0509a
99
README.md
Normal file
99
README.md
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
# Nacos Docker
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This project contains a Docker image meant to facilitate the deployment of [Nacos](https://github.com/alibaba/nacos).
|
||||||
|
|
||||||
|
|
||||||
|
## Project directory
|
||||||
|
|
||||||
|
* build:Nacos makes the source code of the docker image
|
||||||
|
* env: Environment variable file for compose yaml
|
||||||
|
* example: Docker compose example for Nacos server
|
||||||
|
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
Run the following command:
|
||||||
|
|
||||||
|
* Clone project
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
git clone https://github.com/nacos-group/nacos-docker.git
|
||||||
|
cd nacos-docker
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
* Standalone Derby
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
docker-compose -f example/standalone-derby.yaml up
|
||||||
|
```
|
||||||
|
* Standalone Mysql
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
docker-compose -f example/standalone-mysql.yaml up
|
||||||
|
```
|
||||||
|
|
||||||
|
* Cluster
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
docker-compose -f example/cluster-hostname.yaml up
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
* Service registration
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
|
||||||
|
```
|
||||||
|
|
||||||
|
* Service discovery
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName'
|
||||||
|
```
|
||||||
|
|
||||||
|
* Publish config
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
|
||||||
|
```
|
||||||
|
|
||||||
|
* Get config
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* Open the Nacos console in your browser
|
||||||
|
|
||||||
|
link:http://127.0.0.1:8848/nacos/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Common property configuration
|
||||||
|
|
||||||
|
| name | description | option |
|
||||||
|
| ----------------------------- | -------------------------------------- | -------------------------------------- |
|
||||||
|
| MODE | cluster/standalone | cluster/standalone default **cluster** |
|
||||||
|
| PREFER_HOST_MODE | Whether hostname are supported | hostname/ip default **ip** |
|
||||||
|
| NACOS_SERVER_PORT | nacos server port | default **8848** |
|
||||||
|
| NACOS_SERVER_IP | custom nacos server ip when network was mutil-network | |
|
||||||
|
| SPRING_DATASOURCE_PLATFORM | standalone support mysql | mysql / empty default empty |
|
||||||
|
| MYSQL_MASTER_SERVICE_HOST | mysql master host | |
|
||||||
|
| MYSQL_MASTER_SERVICE_PORT | mysql master database port | default : **3306** |
|
||||||
|
| MYSQL_MASTER_SERVICE_DB_NAME | mysql master database name | |
|
||||||
|
| MYSQL_MASTER_SERVICE_USER | username of master database | |
|
||||||
|
| MYSQL_MASTER_SERVICE_PASSWORD | password of master database | |
|
||||||
|
| MYSQL_SLAVE_SERVICE_HOST | mysql slave host | |
|
||||||
|
| MYSQL_SLAVE_SERVICE_PORT | mysql slave database port | default :3306 |
|
||||||
|
|
||||||
|
## Nacos + Grafana + Prometheus
|
||||||
|
Usage reference:[Nacos monitor-guide](https://nacos.io/zh-cn/docs/monitor-guide.html)
|
||||||
|
|
||||||
|
**Note**: When Grafana creates a new data source, the data source address must be **http://prometheus:9090**
|
||||||
|
|
47
build/Dockerfile
Normal file
47
build/Dockerfile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
FROM centos:7.5.1804
|
||||||
|
MAINTAINER pader "huangmnlove@163.com"
|
||||||
|
|
||||||
|
# set environment
|
||||||
|
ENV MODE="cluster" \
|
||||||
|
PREFER_HOST_MODE="ip"\
|
||||||
|
BASE_DIR="/home/nacos" \
|
||||||
|
CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \
|
||||||
|
CLUSTER_CONF="/home/nacos/conf/cluster.conf" \
|
||||||
|
FUNCTION_MODE="all" \
|
||||||
|
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk" \
|
||||||
|
NACOS_USER="nacos" \
|
||||||
|
JAVA="/usr/lib/jvm/java-1.8.0-openjdk/bin/java" \
|
||||||
|
TIME_ZONE="Asia/Shanghai"
|
||||||
|
|
||||||
|
ARG NACOS_VERSION=1.0.0
|
||||||
|
|
||||||
|
WORKDIR /$BASE_DIR
|
||||||
|
|
||||||
|
RUN set -x \
|
||||||
|
&& yum update -y \
|
||||||
|
&& yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget iputils nc vim libcurl\
|
||||||
|
&& wget https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}/nacos-server-${NACOS_VERSION}.tar.gz -P /home \
|
||||||
|
&& tar -xzvf /home/nacos-server-${NACOS_VERSION}.tar.gz -C /home \
|
||||||
|
&& rm -rf /home/nacos-server-${NACOS_VERSION}.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql \
|
||||||
|
&& yum autoremove -y wget \
|
||||||
|
&& ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo '$TIME_ZONE' > /etc/timezone \
|
||||||
|
&& yum clean all
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ADD bin/docker-startup.sh bin/docker-startup.sh
|
||||||
|
ADD conf/application.properties conf/application.properties
|
||||||
|
ADD init.d/custom.properties init.d/custom.properties
|
||||||
|
|
||||||
|
|
||||||
|
# set startup log dir
|
||||||
|
RUN mkdir -p logs \
|
||||||
|
&& cd logs \
|
||||||
|
&& touch start.out \
|
||||||
|
&& ln -sf /dev/stdout start.out \
|
||||||
|
&& ln -sf /dev/stderr start.out
|
||||||
|
RUN chmod +x bin/docker-startup.sh
|
||||||
|
|
||||||
|
EXPOSE 8848
|
||||||
|
ENTRYPOINT ["bin/docker-startup.sh"]
|
95
build/bin/docker-startup.sh
Executable file
95
build/bin/docker-startup.sh
Executable file
@ -0,0 +1,95 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright 1999-2018 Alibaba Group Holding Ltd.
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
set -x
|
||||||
|
export DEFAULT_SEARCH_LOCATIONS="classpath:/,classpath:/config/,file:./,file:./config/"
|
||||||
|
export CUSTOM_SEARCH_LOCATIONS=${DEFAULT_SEARCH_LOCATIONS},file:${BASE_DIR}/conf/,${BASE_DIR}/init.d/
|
||||||
|
export CUSTOM_SEARCH_NAMES="application,custom"
|
||||||
|
PLUGINS_DIR="/home/nacos/plugins/peer-finder"
|
||||||
|
function print_servers(){
|
||||||
|
if [[ ! -d "${PLUGINS_DIR}" ]]; then
|
||||||
|
echo "" > "$CLUSTER_CONF"
|
||||||
|
for server in ${NACOS_SERVERS}; do
|
||||||
|
echo "$server" >> "$CLUSTER_CONF"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
bash $PLUGINS_DIR/plugin.sh
|
||||||
|
sleep 30
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#===========================================================================================
|
||||||
|
# JVM Configuration
|
||||||
|
#===========================================================================================
|
||||||
|
if [[ "${MODE}" == "standalone" ]]; then
|
||||||
|
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
|
||||||
|
else
|
||||||
|
|
||||||
|
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
|
||||||
|
print_servers
|
||||||
|
fi
|
||||||
|
|
||||||
|
#===========================================================================================
|
||||||
|
# Setting system properties
|
||||||
|
#===========================================================================================
|
||||||
|
# set mode that Nacos Server function of split
|
||||||
|
if [[ "${FUNCTION_MODE}" == "config" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=config"
|
||||||
|
elif [[ "${FUNCTION_MODE}" == "naming" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=naming"
|
||||||
|
fi
|
||||||
|
# set nacos server ip
|
||||||
|
if [[ ! -z "${NACOS_SERVER_IP}" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=${NACOS_SERVER_IP}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z "${USE_ONLY_SITE_INTERFACES}" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.use-only-site-local-interfaces=${USE_ONLY_SITE_INTERFACES}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z "${PREFERRED_NETWORKS}" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.preferred-networks=${PREFERRED_NETWORKS}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z "${IGNORED_INTERFACES}" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.ignored-interfaces=${IGNORED_INTERFACES}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${PREFER_HOST_MODE}" == "hostname" ]]; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.preferHostnameOverIp=true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
|
||||||
|
if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]] ; then
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400"
|
||||||
|
else
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${BASE_DIR}/plugins/cmdb"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}"
|
||||||
|
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/target/nacos-server.jar"
|
||||||
|
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
|
||||||
|
JAVA_OPT="${JAVA_OPT} --spring.config.location=${CUSTOM_SEARCH_LOCATIONS}"
|
||||||
|
JAVA_OPT="${JAVA_OPT} --spring.config.name=${CUSTOM_SEARCH_NAMES}"
|
||||||
|
JAVA_OPT="${JAVA_OPT} --logging.config=${BASE_DIR}/conf/nacos-logback.xml"
|
||||||
|
|
||||||
|
echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out"
|
||||||
|
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
|
||||||
|
nohup $JAVA ${JAVA_OPT} > ${BASE_DIR}/logs/start.out 2>&1 < /dev/null
|
33
build/conf/application.properties
Normal file
33
build/conf/application.properties
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# spring
|
||||||
|
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
|
||||||
|
server.contextPath=/nacos
|
||||||
|
server.port=${NACOS_SERVER_PORT:8848}
|
||||||
|
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""}
|
||||||
|
nacos.cmdb.dumpTaskInterval=3600
|
||||||
|
nacos.cmdb.eventTaskInterval=10
|
||||||
|
nacos.cmdb.labelTaskInterval=300
|
||||||
|
nacos.cmdb.loadDataAtStart=false
|
||||||
|
db.num=2
|
||||||
|
db.url.0=jdbc:mysql://${MYSQL_MASTER_SERVICE_HOST}:${MYSQL_MASTER_SERVICE_PORT:3306}/${MYSQL_MASTER_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
|
||||||
|
db.url.1=jdbc:mysql://${MYSQL_SLAVE_SERVICE_HOST}:${MYSQL_SLAVE_SERVICE_PORT:3306}/${MYSQL_MASTER_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
|
||||||
|
db.user=${MYSQL_MASTER_SERVICE_USER}
|
||||||
|
db.password=${MYSQL_MASTER_SERVICE_PASSWORD}
|
||||||
|
server.tomcat.accesslog.enabled=true
|
||||||
|
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
|
||||||
|
# default current work dir
|
||||||
|
server.tomcat.basedir=
|
||||||
|
## spring security config
|
||||||
|
### turn off security
|
||||||
|
|
||||||
|
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
|
||||||
|
# metrics for elastic search
|
||||||
|
management.metrics.export.elastic.enabled=fasle
|
||||||
|
management.metrics.export.influx.enabled=false
|
||||||
|
|
||||||
|
nacos.naming.distro.taskDispatchThreadCount=10
|
||||||
|
nacos.naming.distro.taskDispatchPeriod=200
|
||||||
|
nacos.naming.distro.batchSyncKeyCount=1000
|
||||||
|
nacos.naming.distro.initDataRatio=0.9
|
||||||
|
nacos.naming.distro.syncRetryDelay=5000
|
||||||
|
nacos.naming.data.warmup=true
|
||||||
|
|
19
build/init.d/custom.properties
Normal file
19
build/init.d/custom.properties
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#spring.security.enabled=false
|
||||||
|
#management.security=false
|
||||||
|
#security.basic.enabled=false
|
||||||
|
#nacos.security.ignore.urls=/**
|
||||||
|
#management.metrics.export.elastic.host=http://localhost:9200
|
||||||
|
# metrics for prometheus
|
||||||
|
#management.endpoints.web.exposure.include=*
|
||||||
|
|
||||||
|
# metrics for elastic search
|
||||||
|
#management.metrics.export.elastic.enabled=false
|
||||||
|
#management.metrics.export.elastic.host=http://localhost:9200
|
||||||
|
|
||||||
|
# metrics for influx
|
||||||
|
#management.metrics.export.influx.enabled=false
|
||||||
|
#management.metrics.export.influx.db=springboot
|
||||||
|
#management.metrics.export.influx.uri=http://localhost:8086
|
||||||
|
#management.metrics.export.influx.auto-create-db=true
|
||||||
|
#management.metrics.export.influx.consistency=one
|
||||||
|
#management.metrics.export.influx.compressed=true
|
4
env/mysql-common.env
vendored
Normal file
4
env/mysql-common.env
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# mysql template env
|
||||||
|
MYSQL_ROOT_PASSWORD=root
|
||||||
|
MYSQL_REPLICATION_USER=nacos_ru
|
||||||
|
MYSQL_REPLICATION_PASSWORD=nacos_ru
|
3
env/mysql-master.env
vendored
Normal file
3
env/mysql-master.env
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
MYSQL_DATABASE=nacos_devtest
|
||||||
|
MYSQL_USER=nacos
|
||||||
|
MYSQL_PASSWORD=nacos
|
1
env/mysql-slave.env
vendored
Normal file
1
env/mysql-slave.env
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
MYSQL_MASTER_SERVICE_HOST=mysql-master
|
10
env/nacos-hostname.env
vendored
Normal file
10
env/nacos-hostname.env
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#nacos dev env
|
||||||
|
PREFER_HOST_MODE=hostname
|
||||||
|
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
|
||||||
|
MYSQL_MASTER_SERVICE_HOST=mysql-master
|
||||||
|
MYSQL_MASTER_SERVICE_DB_NAME=nacos_devtest
|
||||||
|
MYSQL_MASTER_SERVICE_PORT=3306
|
||||||
|
MYSQL_SLAVE_SERVICE_HOST=mysql-slave
|
||||||
|
MYSQL_SLAVE_SERVICE_PORT=3306
|
||||||
|
MYSQL_MASTER_SERVICE_USER=nacos
|
||||||
|
MYSQL_MASTER_SERVICE_PASSWORD=nacos
|
10
env/nacos-ip.env
vendored
Normal file
10
env/nacos-ip.env
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#nacos dev env
|
||||||
|
PREFER_HOST_MODE=hostname
|
||||||
|
NACOS_SERVERS=172.16.238.10:8848 172.16.238.11:8848 172.16.238.12:8848
|
||||||
|
MYSQL_MASTER_SERVICE_HOST=mysql-master
|
||||||
|
MYSQL_MASTER_SERVICE_DB_NAME=nacos_devtest
|
||||||
|
MYSQL_MASTER_SERVICE_PORT=3306
|
||||||
|
MYSQL_SLAVE_SERVICE_HOST=mysql-slave
|
||||||
|
MYSQL_SLAVE_SERVICE_PORT=3306
|
||||||
|
MYSQL_MASTER_SERVICE_USER=nacos
|
||||||
|
MYSQL_MASTER_SERVICE_PASSWORD=nacos
|
89
example/cluster-hostname.yaml
Normal file
89
example/cluster-hostname.yaml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
version: "3"
|
||||||
|
services:
|
||||||
|
nacos1:
|
||||||
|
hostname: nacos1
|
||||||
|
container_name: nacos1
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos1:/home/nacos/logs
|
||||||
|
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
|
||||||
|
ports:
|
||||||
|
- "8848:8848"
|
||||||
|
- "9555:9555"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-hostname.env
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
|
||||||
|
nacos2:
|
||||||
|
hostname: nacos2
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos2
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos2:/home/nacos/logs
|
||||||
|
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
|
||||||
|
ports:
|
||||||
|
- "8849:8848"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-hostname.env
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
nacos3:
|
||||||
|
hostname: nacos3
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos3
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos3:/home/nacos/logs
|
||||||
|
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
|
||||||
|
ports:
|
||||||
|
- "8850:8848"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-hostname.env
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
mysql-master:
|
||||||
|
container_name: mysql-master
|
||||||
|
image: nacos/nacos-mysql-master:latest
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-master.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-master:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
mysql-slave:
|
||||||
|
container_name: mysql-slave
|
||||||
|
image: nacos/nacos-mysql-slave:latest
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-slave.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-slave:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3305:3306"
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
prometheus:
|
||||||
|
container_name: prometheus
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
volumes:
|
||||||
|
- ./prometheus/prometheus-cluster.yaml:/etc/prometheus/prometheus.yml
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
depends_on:
|
||||||
|
- nacos1
|
||||||
|
- nacos2
|
||||||
|
- nacos3
|
||||||
|
restart: on-failure
|
||||||
|
grafana:
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana:latest
|
||||||
|
ports:
|
||||||
|
- 3000:3000
|
||||||
|
restart: on-failure
|
87
example/cluster-ip.yaml
Normal file
87
example/cluster-ip.yaml
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
version: "2"
|
||||||
|
services:
|
||||||
|
nacos1:
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos1
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
ipv4_address: 172.16.238.10
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos1:/home/nacos/logs
|
||||||
|
ports:
|
||||||
|
- "8848:8848"
|
||||||
|
- "9555:9555"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-ip.env
|
||||||
|
restart: on-failure
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
|
||||||
|
nacos2:
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos2
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
ipv4_address: 172.16.238.11
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos2:/home/nacos/logs
|
||||||
|
ports:
|
||||||
|
- "8849:8848"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-ip.env
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
nacos3:
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos3
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
ipv4_address: 172.16.238.12
|
||||||
|
volumes:
|
||||||
|
- ./cluster-logs/nacos2:/home/nacos/logs
|
||||||
|
ports:
|
||||||
|
- "8850:8848"
|
||||||
|
env_file:
|
||||||
|
- ../env/nacos-ip.env
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
- mysql-slave
|
||||||
|
mysql-master:
|
||||||
|
container_name: mysql-master
|
||||||
|
image: nacos/nacos-mysql-master:latest
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
ipv4_address: 172.16.238.13
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-master.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-master:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
mysql-slave:
|
||||||
|
container_name: mysql-slave
|
||||||
|
image: nacos/nacos-mysql-slave:latest
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
ipv4_address: 172.16.238.14
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-slave.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-slave:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3305:3306"
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
networks:
|
||||||
|
nacos_net:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.238.0/24
|
19
example/init.d/custom.properties
Normal file
19
example/init.d/custom.properties
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#spring.security.enabled=false
|
||||||
|
#management.security=false
|
||||||
|
#security.basic.enabled=false
|
||||||
|
#nacos.security.ignore.urls=/**
|
||||||
|
#management.metrics.export.elastic.host=http://localhost:9200
|
||||||
|
# metrics for prometheus
|
||||||
|
management.endpoints.web.exposure.include=*
|
||||||
|
|
||||||
|
# metrics for elastic search
|
||||||
|
#management.metrics.export.elastic.enabled=false
|
||||||
|
#management.metrics.export.elastic.host=http://localhost:9200
|
||||||
|
|
||||||
|
# metrics for influx
|
||||||
|
#management.metrics.export.influx.enabled=false
|
||||||
|
#management.metrics.export.influx.db=springboot
|
||||||
|
#management.metrics.export.influx.uri=http://localhost:8086
|
||||||
|
#management.metrics.export.influx.auto-create-db=true
|
||||||
|
#management.metrics.export.influx.consistency=one
|
||||||
|
#management.metrics.export.influx.compressed=true
|
34
example/prometheus/prometheus-cluster.yaml
Normal file
34
example/prometheus/prometheus-cluster.yaml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# my global config
|
||||||
|
global:
|
||||||
|
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
|
||||||
|
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
|
||||||
|
# scrape_timeout is set to the global default (10s).
|
||||||
|
|
||||||
|
# Alertmanager configuration
|
||||||
|
alerting:
|
||||||
|
alertmanagers:
|
||||||
|
- static_configs:
|
||||||
|
- targets:
|
||||||
|
# - alertmanager:9093
|
||||||
|
|
||||||
|
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
||||||
|
rule_files:
|
||||||
|
# - "first_rules.yml"
|
||||||
|
# - "second_rules.yml"
|
||||||
|
|
||||||
|
# A scrape configuration containing exactly one endpoint to scrape:
|
||||||
|
# Here it's Prometheus itself.
|
||||||
|
scrape_configs:
|
||||||
|
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
|
||||||
|
- job_name: 'prometheus'
|
||||||
|
|
||||||
|
# metrics_path defaults to '/metrics'
|
||||||
|
# scheme defaults to 'http'.
|
||||||
|
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:9090']
|
||||||
|
|
||||||
|
- job_name: 'nacos'
|
||||||
|
metrics_path: '/nacos/actuator/prometheus'
|
||||||
|
static_configs:
|
||||||
|
- targets: ["nacos1:8848","nacos2:8848","nacos3:8848"]
|
34
example/prometheus/prometheus-standalone.yaml
Normal file
34
example/prometheus/prometheus-standalone.yaml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# my global config
|
||||||
|
global:
|
||||||
|
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
|
||||||
|
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
|
||||||
|
# scrape_timeout is set to the global default (10s).
|
||||||
|
|
||||||
|
# Alertmanager configuration
|
||||||
|
alerting:
|
||||||
|
alertmanagers:
|
||||||
|
- static_configs:
|
||||||
|
- targets:
|
||||||
|
# - alertmanager:9093
|
||||||
|
|
||||||
|
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
||||||
|
rule_files:
|
||||||
|
# - "first_rules.yml"
|
||||||
|
# - "second_rules.yml"
|
||||||
|
|
||||||
|
# A scrape configuration containing exactly one endpoint to scrape:
|
||||||
|
# Here it's Prometheus itself.
|
||||||
|
scrape_configs:
|
||||||
|
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
|
||||||
|
- job_name: 'prometheus'
|
||||||
|
|
||||||
|
# metrics_path defaults to '/metrics'
|
||||||
|
# scheme defaults to 'http'.
|
||||||
|
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:9090']
|
||||||
|
|
||||||
|
- job_name: 'nacos'
|
||||||
|
metrics_path: '/nacos/actuator/prometheus'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['nacos:8848']
|
29
example/standalone-derby.yaml
Normal file
29
example/standalone-derby.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
version: "2"
|
||||||
|
services:
|
||||||
|
nacos:
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos-standalone
|
||||||
|
environment:
|
||||||
|
- PREFER_HOST_MODE=hostname
|
||||||
|
- MODE=standalone
|
||||||
|
volumes:
|
||||||
|
- ./standalone-logs/:/home/nacos/logs
|
||||||
|
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
|
||||||
|
ports:
|
||||||
|
- "8848:8848"
|
||||||
|
prometheus:
|
||||||
|
container_name: prometheus
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
volumes:
|
||||||
|
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
depends_on:
|
||||||
|
- nacos
|
||||||
|
restart: on-failure
|
||||||
|
grafana:
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana:latest
|
||||||
|
ports:
|
||||||
|
- 3000:3000
|
||||||
|
restart: on-failure
|
64
example/standalone-mysql.yaml
Normal file
64
example/standalone-mysql.yaml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
version: "2"
|
||||||
|
services:
|
||||||
|
nacos:
|
||||||
|
image: nacos/nacos-server:latest
|
||||||
|
container_name: nacos-standalone-mysql
|
||||||
|
environment:
|
||||||
|
- PREFER_HOST_MODE=hostname
|
||||||
|
- MODE=standalone
|
||||||
|
- SPRING_DATASOURCE_PLATFORM=mysql
|
||||||
|
- MYSQL_MASTER_SERVICE_HOST=mysql-master
|
||||||
|
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_devtest
|
||||||
|
- MYSQL_MASTER_SERVICE_PORT=3306
|
||||||
|
- MYSQL_SLAVE_SERVICE_HOST=mysql-slave
|
||||||
|
- MYSQL_SLAVE_SERVICE_PORT=3306
|
||||||
|
- MYSQL_MASTER_SERVICE_USER=nacos
|
||||||
|
- MYSQL_MASTER_SERVICE_PASSWORD=nacos
|
||||||
|
volumes:
|
||||||
|
- ./standalone-logs/:/home/nacos/logs
|
||||||
|
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
|
||||||
|
ports:
|
||||||
|
- "8848:8848"
|
||||||
|
- "9555:9555"
|
||||||
|
depends_on:
|
||||||
|
- mysql-slave
|
||||||
|
restart: on-failure
|
||||||
|
mysql-master:
|
||||||
|
container_name: mysql-master
|
||||||
|
image: nacos/nacos-mysql-master:latest
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-master.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-master:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
mysql-slave:
|
||||||
|
container_name: mysql-slave
|
||||||
|
image: nacos/nacos-mysql-slave:latest
|
||||||
|
env_file:
|
||||||
|
- ../env/mysql-common.env
|
||||||
|
- ../env/mysql-slave.env
|
||||||
|
volumes:
|
||||||
|
- ./mysql-slave:/var/lib/mysql
|
||||||
|
ports:
|
||||||
|
- "3305:3306"
|
||||||
|
depends_on:
|
||||||
|
- mysql-master
|
||||||
|
prometheus:
|
||||||
|
container_name: prometheus
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
volumes:
|
||||||
|
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
depends_on:
|
||||||
|
- nacos
|
||||||
|
restart: on-failure
|
||||||
|
grafana:
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana:latest
|
||||||
|
ports:
|
||||||
|
- 3000:3000
|
||||||
|
restart: on-failure
|
||||||
|
|
Loading…
Reference in New Issue
Block a user