eureka主动下线某个服务
来源:原创
时间:2022-05-12
作者:脚本小站
分类:Linux
下线服务:
curl -X PUT "http://ip:port/eureka/apps/{application}/{instance}/status?value=OUT_OF_SERVICE" curl -X PUT "http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}/status?value=OUT_OF_SERVICE"
上线服务:
curl -X PUT "http://ip:port/eureka/apps/{application}/{instance}/status?value=UP" curl -X PUT "http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}/status?value=UP"
删除服务:貌似不管用
curl -X DELETE http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}
在k8s中可以使用如下两种方法来下线服务:
blog.csdn.net/qq_31960623/article/details/119865937 cnblogs.com/fengjian2016/p/15205477.html jishuin.proginn.com/p/763bfbd676e9
通过请求接口来让服务主动下线:
lifecycle: preStop: httpGet: path: /unhealthy port: http
或者执行脚本来让服务主动下线:
lifecycle: preStop: exec: command: ['/bin/sh','-c','/tmp/preStop.sh']
preStop.sh:这是nacos的eureka同理。
#!/bin/sh # shell脚本作用 # 在更新pod时先执行这个脚本,把pod应用从nacos中下线,然后再关闭pod #echo "输出必要的环境变量" #echo "${NACOS_SERVER_ADDR}" #echo "${PODNAME}" #echo "${PODIP}" #echo "${NACOS_NAMESPACE}" result=$(curl -X PUT "http://${NACOS_SERVER_ADDR}/nacos/v1/ns/instance?serviceName=${PODNAME}&clusterName=DEFAULT&groupName=DEFAULT_GROUP&ip=${PODIP}&port=8093&enabled=false&namespaceId=${NACOS_NAMESPACE}") echo "输出curl执行结果result:${result}" if [ ${result} == "ok" ]; then echo "执行成功" sleep 45 exit 0 else echo "执行失败" exit 1 fi
如何在Pod中获取PodIP:
https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/environment-variable-expose-pod-information/
k8s上部署高可用eureka服务
eureka-statefulset.yaml:
--- apiVersion: v1 kind: Service metadata: name: eureka labels: app: eureka spec: ports: - port: 8761 name: eureka clusterIP: None selector: app: eureka --- apiVersion: apps/v1 kind: StatefulSet metadata: name: eureka spec: serviceName: "eureka" replicas: 3 selector: matchLabels: app: eureka template: metadata: labels: app: eureka spec: containers: - name: eureka image: freemanliu/eureka:v1.1.1 ports: - containerPort: 8761 resources: limits: # jvm会自动发现该限制 memory: 1Gi env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: JAVA_OPTS value: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=2 -XX:CICompilerCount=8 -XX:ActiveProcessorCount=8 -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+OptimizeStringConcat - name: EUREKA_SERVER value: "http://eureka-0.eureka:8761/eureka/,http://eureka-1.eureka:8761/eureka/,http://eureka-2.eureka:8761/eureka/" - name: EUREKA_INSTANCE_HOSTNAME value: ${MY_POD_NAME}.eureka podManagementPolicy: "Parallel"
参考地址:
gitee.com/bill_liu_work/eureka/tree/master