SpringCloud-eureka集群搭建
1.单机版集群
修改配置文件为我们需要的配置文件:
spring:
application:
name: eureka
security:
user:
name: admin
password: admin123
server:
port: 8761
eureka:
region: auto-MI
datacenter: zhonguancun
environment: auto-MI-eureka
client:
service-url:
defaultZone: http://admin:admin123@localhost:8761/eureka
healthcheck:
enabled: true
register-with-eureka: true
fetch-registry: true
allow-redirects: true
instance:
appname: ${spring.application.name}
virtualHostName: ${spring.application.name}
secureVirtualHostName: ${spring.application.name}
nonSecurePort: ${server.port}
lease-renewal-interval-in-seconds: 10
lease-expiration-duration-in-seconds: 90
prefer-ip-address: false
hostname: localhost
server:
enable-self-preservation: true
eviction-interval-timer-in-ms: 3000
添加host文件
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3
打包jar
mvn clean compile package -Dmaven.skip.test=true
启动jar,覆写eureka配置
java -Deureka.client.register-with-eureka=true -Deureka.client.service-url.defaultZone=http://admin:admin123@eureka1:8761/eureka,http://admin:admin123@eureka2:8761/eureka,http://admin:admin123@eureka3:8761/eureka -Deureka.instance.hostname=eureka1 -jar eureka.jar
2.基于kubernetes的集群配置
创建Statesfulset部署配置文件
apiVersion: v1
kind: Service
metadata:
name: eureka
namespace: development
spec:
ports:
- port: 8761
targetPort: 8761
clusterIP: None
selector:
app: eureka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: eureka
namespace: development
spec:
serviceName: "eureka"
selector:
matchLabels:
app: eureka
replicas: 3
template:
metadata:
labels:
app: eureka
spec:
imagePullSecrets:
- name: regharbor
containers:
- name: eureka
image: 192.168.163.251:25532/bxy/eureka:2.0
imagePullPolicy: Always
env:
- name: JVM_PARAMS
value: "-Deureka.client.service-url.defaultZone=http://admin:admin123@eureka-0.eureka:8761/eureka/,\
http://admin:admin123@eureka-1.eureka:8761/eureka/,\
http://admin:admin123@eureka-2.eureka:8761/eureka/ -Deureka.instance.hostname=${POD_NAME}.eureka -D-Deureka.client.register-with-eureka=true"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
limits:
cpu: "4"
memory: 2048Mi
requests:
cpu: "2"
memory: 512Mi
ports:
- containerPort: 8761
附上对应的Dockerfile
FROM alpine
MAINTAINER yang.zhao
WORKDIR /opt
#copy jar files
ADD ./jdk1.8.0_221.tar.gz /opt/jdk8/
COPY ./target/*.jar /opt/jar/app.jar
COPY ./glibc-2.29-r0.apk /opt/
ADD ./main.tar.gz /Users/temp/exp/
#install glibc
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN apk add glibc-2.29-r0.apk && rm -rf *.apk
WORKDIR /opt
ARG JAR_FILE
#configuraton jdk environments
ENV JAR_HOME /opt/jar
ENV PATH $PATH:$JAVA_HOME
ENV JAVA_OPTIONS=""
ENV JVM_PARAMS="-Deureka.client.service-url.defaultZone=${EUREKA_NODES}"
#ENV SPRING_OPTIONS=" --spring.profiles.active=test \
#--eureka.client.service-url.defaultZone=http://admin:admin123@192.168.163.252:8761/eureka"
#mkdir user directory
COPY ./$JAR_FILE $JAR_HOME/app.jar
#start java app
CMD $JAVA_HOME/java $JAVA_OPTIONS $JVM_PARAMS -jar $JAR_HOME/app.jar
构建Dockerfile
docker build -t eureka:2.x .
部署到kubernetes集群
kubectl apply -f state.yaml