搭建集群版Eureka Server
Eureka Server注册中心集群中的每个节点都是平等的,每个节点可以作为一个服务,服务节点之间通过发送心跳进行投票。
依赖单机版的eurekaServer的项目修改其中的内容即可。
1. 新建文件application-eurekaserver1.properties
spring.application.name=eureka-server
server.port=8761
# 定义Eureka Server实例在注册中心中的命名。建议使用配置文件的后缀定义。
eureka.instance.hostname=eurekaserver1
# 配置集群中其他Eureka Server节点的信息。如果需要配置多个节点,使用逗号','分割多个节点信息。
# 节点的信息格式为: http://地址:端口/eureka/ 。 地址可以使用IP、域名、主机名定义。
# 使用HTTP Basic语法,提供安全认证中需要使用的用户名和密码。
# 语法是: http://用户名:密码@地址:端口/eureka/
eureka.client.serviceUrl.defaultZone=http://eurekaserver2:8761/eureka/
application-eurekaserver2.properties
spring.application.name=eureka-server
server.port=8761
# 定义Eureka Server实例在注册中心中的命名。建议使用配置文件的后缀定义。
eureka.instance.hostname=eurekaserver1
# 配置集群中其他Eureka Server节点的信息。如果需要配置多个节点,使用逗号','分割多个节点信息。
# 节点的信息格式为: http://地址:端口/eureka/ 。 地址可以使用IP、域名、主机名定义。
# 使用HTTP Basic语法,提供安全认证中需要使用的用户名和密码。
# 语法是: http://用户名:密码@地址:端口/eureka/
eureka.client.serviceUrl.defaultZone=http://eurekaserver2:8761/eureka/
2. 修改主机名,vi /etc/hosts
192.168.186.115 eurekaserver1 192.168.186.116 eurekaserver2
3. 使用Maven install打包jar,在项目工程的target目录中,分别上传到两个服务器上
4. 在上传jar包同级目录新建文件,vi eurekaserver.sh,修改对应的参数
#!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` JAR_NAME="项目jar包名称" JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME #JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:PermSize=128m" JAVA_MEM_OPTS="" SPRING_PROFILES_ACTIV="-Dspring.profiles.active=配置文件变量名称" #SPRING_PROFILES_ACTIV="" LOG_DIR=$CUR_SHELL_DIR/logs LOG_PATH=$LOG_DIR/${JAR_NAME%..log echo_help() { echo -e "syntax: sh $CUR_SHELL_NAME start|stop" } if [ -z $1 ];then echo_help exit 1 fi if [ ! -d "$LOG_DIR" ];then mkdir "$LOG_DIR" fi if [ ! -f "$LOG_PATH" ];then touch "$LOG_DIR" fi if [ "$1" == "start" ];then # check server PIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'` if [ -n "$PIDS" ]; then echo -e "ERROR: The $JAR_NAME already started and the PID is ${PIDS}." exit 1 fi echo "Starting the $JAR_NAME..." # start nohup java $JAVA_MEM_OPTS -jar $SPRING_PROFILES_ACTIV $JAR_PATH >> $LOG_PATH 2>&1 & COUNT=0 while [ $COUNT -lt 1 ]; do sleep 1 COUNT=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}' | wc -l` if [ $COUNT -gt 0 ]; then break fi done PIDS=`ps --no-heading -C java -f --width 1000 | grep "$JAR_NAME" | awk '{print $2}'` echo "${JAR_NAME} Started and the PID is ${PIDS}." echo "You can check the log file in ${LOG_PATH} for details." elif [ "$1" == "stop" ];then PIDS=`ps --no-heading -C java -f --width 1000 | grep $JAR_NAME | awk '{print $2}'` if [ -z "$PIDS" ]; then echo "ERROR:The $JAR_NAME does not started!" exit 1 fi echo -e "Stopping the $JAR_NAME..." for PID in $PIDS; do kill $PID > /dev/null 2>&1 done COUNT=0 while [ $COUNT -lt 1 ]; do sleep 1 COUNT=1 for PID in $PIDS ; do PID_EXIST=`ps --no-heading -p $PID` if [ -n "$PID_EXIST" ]; then COUNT=0 break fi done done echo -e "${JAR_NAME} Stopped and the PID is ${PIDS}." else echo_help exit 1 fi
修改可执行权限
chmod 755 eurekaserver.sh
启动Eureka Server - ./eurekaserver.sh start 关闭Eureka Server - ./eurekaserver.sh stop