このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
最近の更新
Kubernetes を使って Galeraで冗長化されたDB、GlusterFSで冗長化されたディスクを利用して
冗長化されたWordpressを作って完全冗長化してみる。
GlusterFSは、こちら で作成したボリュームにディレクトリを作成して利用する。
mount.glusterfs localhost:k8s-volume /mnt mkdir /mnt/wordpress/ # ls /mnt/ pv01 wordpress
wordpress-pv.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: wordpress-pv labels: name: wordpress-pv spec: accessModes: - ReadWriteMany capacity: storage: 1Gi glusterfs: endpoints: glusterfs path: k8s-volume/wordpress readOnly: false
kubectl create -f wordpress-pv.yaml
wordpress-pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: wordpress-pvc name: wordpress-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi selector: matchLabels: name: wordpress-pv status: {}
kubectl create -f wordpress-pvc.yaml
このGaleraはダウンしても、起動してきたとき勝手に同期してよく出来てます。
Galeraは、下記を利用
https://github.com/bitnami/charts/tree/master/bitnami/mariadb-galera/
helm repo add bitnami https://charts.bitnami.com/bitnami
今回は、PVなしで、DB(wordpress)を作成してインストール
※本番では、persistence.existingClaimでPVCを指定して利用する。
root password | root_password |
db.name | wordpress |
db.user | wp_user |
db.password | wp_pass |
helm install my-release \ --set persistence.enabled=false \ --set rootUser.password=root_password \ --set db.user=wp_user \ --set db.password=wp_pass \ --set db.name=wordpress \ bitnami/mariadb-galera
serviceのClusterIPは、次のwordpressデプロイで利用します。
# kubectl get svc my-release-mariadb-galera NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-release-mariadb-galera ClusterIP 10.110.173.32 <none> 3306/TCP 89m # kubectl get pod -l app.kubernetes.io/name=mariadb-galera NAME READY STATUS RESTARTS AGE my-release-mariadb-galera-0 1/1 Running 1 (48m ago) 75m my-release-mariadb-galera-1 1/1 Running 0 74m my-release-mariadb-galera-2 1/1 Running 0 74m
# kubectl exec -it my-release-mariadb-galera-0 -- bash $ mysql -u root -p MariaDB [(none)]> show status like 'wsrep_local_state_comment'; +---------------------------+--------+ | Variable_name | Value | +---------------------------+--------+ | wsrep_local_state_comment | Synced | +---------------------------+--------+ 1 row in set (0.002 sec) MariaDB [(none)]> show status like 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.001 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | | wordpress | +--------------------+ 6 rows in set (0.038 sec)
1.GlusterFSで作成した wordpress-pvc をwordpress の/var/www/htmlでマウントする。
wordpress.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - image: wordpress name: wordpress env: - name: WORDPRESS_DB_HOST value: 10.110.173.32:3306 - name: WORDPRESS_DB_USER value: wp_user - name: WORDPRESS_DB_PASSWORD value: wp_pass ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-local-storage mountPath: /var/www/html volumes: - name: wordpress-local-storage persistentVolumeClaim: claimName: wordpress-pvc
kubectl create -f wordpress.yaml
これで外部から見えるようになります。
後は、このexternalIPsをグローバルIPからロードバランスするだけ。
wordpress-externalip.yaml apiVersion: v1 kind: Service metadata: name: external-ip spec: type: ClusterIP externalIPs: - 172.16.0.93 - 172.16.0.153 - 172.16.0.166 ports: - name: cluster-port port: 8080 targetPort: 80 selector: app: wordpress
kubectl create -f wordpress-externalip.yaml