使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis

glusterfs 怎么集群,网上一搜铺天盖地的

可利用这个特点做单节点高可用,因为K8S 哪怕节点宕机了 master 会在随意一台节点把挂掉的复活

当然我是在自己的环境下跑,经过网络的glusterfs,数据传输,等都有一定的性能损耗,对网络要求也特别高

小文件存储性能也不高等问题.

这里记录一下rabbitmq 单机高可用情景,mysql,mongodb, redis 等,万变不离其宗

事先创建好了 volume,卷名为 env-dev

随便找个客户机挂载

mount -t glusterfs 192.168.91.135:/env-dev /mnt/env/dev

预先创建需要的文件夹

mkdir -p /mnt/env/dev/rabbitmq/mnesia

  

编写 glusterfs endpoint

[[email protected]0 dev]# cat pv-ep.yaml
apiVersion: v1
kind: Endpoints
metadata:
  name: glusterfs
  namespace: env-dev
subsets:
- addresses:
  - ip: 192.168.91.135
  - ip: 192.168.91.136
  ports:
  - port: 49152
    protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: glusterfs
  namespace: env-dev
spec:
  ports:
  - port: 49152
    protocol: TCP
    targetPort: 49152
  sessionAffinity: None
  type: ClusterIP

编写 pv,注意这里path 是 volume名称 + 具体路径

[[email protected]0 dev]# cat rabbitmq-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rabbitmq-pv
  labels:
    type: glusterfs
spec:
  storageClassName: rabbitmq-dir
  capacity:
    storage: 3Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    endpoints: glusterfs
    path: "env-dev/rabbitmq/mnesia"
    readOnly: false

编写pvc

[[email protected] dev]# cat rabbitmq-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rabbitmq-pvc
  namespace: env-dev
spec:
  storageClassName: rabbitmq-dir
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 3Gi

创建endpoint pv pcv

kubectl apply -f pv-ep.yaml
kubectl apply -f rabbitmq-pv.yaml

kubectl apply -f rabbitmq-pvc.yaml

使用方式,红字部分

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ha-rabbitmq
  namespace: env-dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ha-rabbitmq
  template:
    metadata:
      labels:
        app: ha-rabbitmq
    spec:
      #hostNetwork: true
      hostname: ha-rabbitmq
      terminationGracePeriodSeconds: 60
      containers:
      - name: ha-rabbitmq
        image: 192.168.91.137:5000/rabbitmq:3.7.7-management-alpine
        securityContext:
          privileged: true
        env:
        - name: "RABBITMQ_DEFAULT_USER"
          value: "rabbit"
        - name: "RABBITMQ_DEFAULT_PASS"
          value: "rabbit"
        ports:
        - name: tcp
          containerPort: 5672
          hostPort: 5672
        - name: http
          containerPort: 15672
          hostPort: 15672
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /
            port: 15672
            scheme: HTTP
          initialDelaySeconds: 20
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /
            port: 15672
            scheme: HTTP
          initialDelaySeconds: 20
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        volumeMounts:
        - name: date
          mountPath: /etc/localtime
        - name: workdir
          mountPath: "/var/lib/rabbitmq/mnesia"
      volumes:
      - name: date
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
      - name: workdir
        persistentVolumeClaim:
          claimName: rabbitmq-pvc

---

apiVersion: v1
kind: Service
metadata:
  name: ha-rabbitmq
  namespace: env-dev
  labels:
    app: ha-rabbitmq
spec:
  ports:
  - name: tcp
    port: 5672
    targetPort: 5672
  - name: http
    port: 15672
    targetPort: 15672

创建rabbitmq pod以及service.

kubectl create -f ha-rabbitmq.yaml

分配到了第一个节点,看看数据文件

在管理页面创建一个创建一个 virtual host

环境东西太多,这里就不暴力关机了,直接删除再创建

这次分配到节点0

看看刚才创建的virtual host

还健在

haproxy 代理

[[email protected] conf]# cat haproxy.cfg
global
chroot /usr/local
daemon
nbproc 1
group nobody
user nobody
pidfile /haproxy.pid
#ulimit-n 65536
#spread-checks 5m
#stats timeout 5m
#stats maxconn 100

########默认配置############
defaults
mode tcp
retries 3              #两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch      #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose    #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 32000          #默认的最大连接数
timeout connect 10s #连接超时
timeout client 8h #客户端超时
timeout server 8h #服务器超时
timeout check 10s    #心跳检测超时
log 127.0.0.1 local0 err #[err warning info debug]

########MariaDB配置#################
listen mariadb
bind 0.0.0.0:3306
mode tcp
balance leastconn
server mariadb1 192.168.91.141:3306 check port 3306 inter 2s rise 1 fall 2 maxconn 1000
server mariadb2 192.168.91.142:3306 check port 3306 inter 2s rise 1 fall 2 maxconn 1000
server mariadb3 192.168.91.143:3306 check port 3306 inter 2s rise 1 fall 2 maxconn 1000

#######RabbitMq配置#################
listen rabbitmq
bind 0.0.0.0:5672
mode tcp
balance leastconn
server rabbitmq1 192.168.91.141:5672 check port 5672 inter 2s rise 1 fall 2 maxconn 1000
server rabbitmq2 192.168.91.142:5672 check port 5672 inter 2s rise 1 fall 2 maxconn 1000
server rabbitmq3 192.168.91.143:5672 check port 5672 inter 2s rise 1 fall 2 maxconn 1000

#######Redis配置#################
listen redis
bind 0.0.0.0:6379
mode tcp
balance leastconn
server redis1 192.168.91.141:6379 check port 6379 inter 2s rise 1 fall 2 maxconn 1000
server redis2 192.168.91.142:6379 check port 6379 inter 2s rise 1 fall 2 maxconn 1000
server redis3 192.168.91.143:6379 check port 6379 inter 2s rise 1 fall 2 maxconn 1000

nginx 代理管理页面

原文地址:https://www.cnblogs.com/sweetchildomine/p/9343745.html

时间: 2024-08-29 16:17:09

使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis的相关文章

CentOS7下配置GlusterFS供Kubernetes使用

CentOS7下配置GlusterFS供Kubernetes使用 [TOC] 1. 环境说明 系统:CentOS7,/data为非系统分区挂载目录docker:1.13.1kubernetes:1.11.1glusterfs:4.1.2 2. GlusterFS部署 2个节点,192.168.105.97.192.168.105.98 使用yum安装 yum install centos-release-gluster yum -y install glusterfs glusterfs-fus

kubernetes的的私有仓库vmware harbor的配置

kubernetes的的私有仓库vmware harbor的配置 标签(空格分隔): kubernetes系列 一. 系统环境的配置 二. vmware harbor 的安装测试 三. 发布一个测试nginx 一:系统初始化 1.1 系统主机名 192.168.100.11 node01.flyfish 192.168.100.12 node02.flyfish 192.168.100.13 node03.flyfish 192.168.100.14 node04.flyfish 192.168

使用Ceph集群作为Kubernetes的动态分配持久化存储

使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储. Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ceph-common

在Kubernetes上运行高可用的WordPress和MySQL

WordPress是用于编辑和发布Web内容的主流平台.在本教程中,我将逐步介绍如何使用Kubernetes来构建高可用性(HA)WordPress部署. WordPress由两个主要组件组成:WordPress PHP服务器和用于存储用户信息.帖子和网站数据的数据库.我们需要让整个应用程序中这两个组件在高可用的同时都具备容错能力. 在硬件和地址发生变化的时候,运行高可用服务可能会很困难:非常难维护.借助Kubernetes以及其强大的网络组件,我们可以部署高可用的WordPress站点和MyS

Kubernetes从私有镜像仓库中拉取镜像

当我们尝试从私有仓库中拉取镜像时,可能会收到这样提示:requested access to the resource is denied Error response from daemon: pull access denied for xxx repository does not exist or may require 'docker login': denied: requested access to the resource is denied  这是由于访问私有仓库时是需要凭证

kubernetes下载docker私有仓库镜像

环境说明 docker仓库未认证地址:192.168.10.200:5000用户名:admin密码:admin邮箱:[email protected] 修改docker配置,访问docker私有仓库 1.docker源生版本 $cat /etc/sysconfig/docker # /etc/sysconfig/docker # Modify these options if you want to change the way the docker daemon runs OPTIONS='-

Kubernetes(K8s)安装部署过程(三)--创建高可用etcd集群

这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.106:/etc/kubernetes/ssl scp ca.pem kubernetes-key.pem kubernetes.pem [email protected]10.10.90.

mysql主从复制、redis基础、持久化和主从复制

一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 -u 用户 -p 密码验证 -h 连接的主机地址 3.远程链接mysql服务端 mysql -uroot -p -h 192.168.3.115 4.修改mysql密码 # 修改当前用户的密码 set password = PASSWORD('mariadb123

案例解读|迁云的灵魂3问,降多少本,增多少效,真平滑否?

近年来,在线教育产业发展十分迅速,在线教育真正打破了时间和空间的限制,使得学员可以随时随地学习,预期2020年将有超过3000亿的市场规模.随着行业不断成熟,国家政策的规范发展使得在线教育的发展进入调整期,烧钱获客的模式不再持续,在兼顾业务发展的同时要注意成本控制. 那就需要注意两大问题.一是服务器资源作为IT基础设施支出的头部预算,如何合理利用服务器资源,按需扩容,节省人力维护成本是关键.第二点是由于教育行业的特殊性,满足国家政策对于互联网教育行业安全等级保护有要求,也是重中之重.围绕这两点,