반응형
728x90
반응형

모든 커맨드는 루트로 작업

 

  1. 필요 패키지 설치(모든 서버)
    $ apt update; apt install -y ansible

  2. 첫번째 서버에 Cephadm-ansible git repo 복제
    $ git clone https://github.com/YoungjuWang/ubuntu-cephadm-ansible.git
  3. ubuntu-cephadm-ansible 폴더로 들어가서 vars.yml 수정
    $ cd ubuntu-cephadm-ansible/
    vi vars.yml
    ---
    container_engine: "docker"         수정
    ---
  4. ansible inventory 수정
    $ vi ceph.inventory
    ---
     bootstrap ansible_connection=local
    mon2 ansible_host="host2 ip"
    mon3 ansible_host=""host3 ip"
    mon4 ansible_host=""host4 ip"
    (host 개수만큼 추가)
    
    all:vars] ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    ---
  5. ssh-key를 생성하고 copy
    $ ssh-keygen -N "" -f ~/.ssh/id_rsa
    $ ssh-copy-id "host ip"
    (host 전부 등록)
  6. ssh connection 확인
    $ ansible -i ceph.inventory -m ping all


    결과 예시:
    $ ansible -i ceph.inventory -m ping all
    ceph-1 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
    }
    ceph-2 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
    }
    ceph-3 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
    }
    ceph-4 | SUCCESS => {
         "ansible_facts": {
             "discovered_interpreter_python": "/usr/bin/python3" 
         }, 
         "changed": false, 
         "ping": "pong" 
    }

  7. Ceph 패키지 설치
    $ ansible-playbook -i ceph.inventory preflight.yml

  8. Ceph 클러스터 구성
    $ cephadm bootstrap --mon-ip "첫번째 host ip"

    # 아래 항목이 구성됨
    - Create a monitor and manager daemon for the new cluster on the local host.
    - Generate a new SSH key for the Ceph cluster and add it to the root user’s /root/.ssh/authorized_keys file.
    - Write a minimal configuration file to /etc/ceph/ceph.conf. This file is needed to communicate with the new cluster.
    - Write a copy of the client.admin administrative (privileged!) secret key to /etc/ceph/ceph.client.admin.keyring.
    - Write a copy of the public key to /etc/ceph/ceph.pub.

    결과 예시:
$ cephadm bootstrap --mon-ip "첫번째 host ip"

Fetching dashboard port number...
Ceph Dashboard is now available at:

             URL: https://ceph-1:8443/
            User: admin
        Password: kxnjyyu66x

Enabling client.admin keyring and conf on hosts with "admin" label
You can access the Ceph CLI with:

        sudo /usr/sbin/cephadm shell --fsid af39f080-af03-11ec-9050-fa163e37df68 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/docs/pacific/mgr/telemetry/

 

참고 : https://yjwang.tistory.com/119

반응형
728x90
반응형
$ sudo vi /etc/docker/daemon.json
---
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "1"
  },
  "storage-driver": "overlay2"
}
---
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

18.06.2ce에서는 로그 크기 이슈가 없었으나.. 19.03ce에서는 발생해서 쓰고 있는 옵션입니다.

cgroupdriver의 경우 기본값인 cgroupfs를 사용하게 되면 램누수가 발생할 수 있다고 하네요.

(저는 겪어본적 없습니다.)

 

필요시 sudo usermod -aG docker $USER

 

출처 : https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/

반응형
728x90
반응형

1. 테스트환경

   4Core 32GB RAM, Ubuntu 18.04

 

2. Topology

Docker
mysql57 mysql80
mysql57-exporter mysql80-exporter
Prometheus

- 사용 포트 

  1) docker-proxy 자동 지정(mysql57 mysql80 mysql57-exporter mysql80-exporter)

  2) Prometheus : 9090

     * mysql의 3306포트는 host와 매핑하지 않음

 

3. 절차

0) docker 설정

 

$ vi /etc/docker/daemon.json

---

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "1"
  },
  "storage-driver": "overlay2",
  "metrics-addr" : "[hostIP]:9323",
  "experimental" : true

}

---

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

 

1) mysql57 배포

 

$ sudo docker network create db_network

$ docker run -d --name mysql57 --publish 3306 --network db_network --restart unless-stopped \
--env MYSQL_ROOT_PASSWORD=mypassword --volume mysql57-datadir:/var/lib/mysql \
mysql:5.7

 

2) mysql80 배포

 

$ docker run -d --name mysql80 --publish 3306 --network db_network --restart unless-stopped \

--env MYSQL_ROOT_PASSWORD=mypassword --volume mysql80-datadir:/var/lib/mysql \

--default-authentication-plugin=mysql_native_password \

mysql:8

 

3) mysql에 exporter 계정생성

 

$ docker exec -it mysql80 mysql -uroot -pmypassword

mysql> CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpassword' WITH MAX_USER_CONNECTIONS 3;
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

 

$ docker exec -it mysql57 mysql -uroot -pmypassword

mysql> CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpassword' WITH MAX_USER_CONNECTIONS 3;
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

 

4) Node_exporter 생성

 
$ docker run -d --name mysql80-exporter --publish 9104 --network db_network --restart always \
--env DATA_SOURCE_NAME="exporter:exporterpassword@(mysql80:3306)/" \
--collect.info_schema.processlist --collect.info_schema.innodb_metrics --collect.info_schema.tablestats \
--collect.info_schema.tables --collect.info_schema.userstats --collect.engine_innodb_status \
prom/mysqld-exporter:latest

$ docker run -d --name mysql57-exporter --publish 9104 --network db_network --restart always \
-e DATA_SOURCE_NAME="exporter:exporterpassword@(mysql57:3306)/" \
--collect.info_schema.processlist --collect.info_schema.innodb_metrics --collect.info_schema.tablestats \
--collect.info_schema.tables --collect.info_schema.userstats --collect.engine_innodb_status \
prom/mysqld-exporter:latest

 

5) 프로메테우스 생성

 

$ vim ~/prometheus.yml

---

global:
  scrape_interval:     5s
  scrape_timeout:      3s
  evaluation_interval: 5s

# Our alerting rule files
rule_files:
  - "alert.rules"

# Scrape endpoints
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'mysql'
    static_configs:
      - targets: ['mysql57-exporter:9104','mysql80-exporter:9104']

  - job_name: 'docker'
    static_configs:
      - targets: ['hostIP:9323']

---

$ docker run -d --name prometheus-server --publish 9090:9090 --network db_network --restart unless-stopped \

--mount type=volume,src=prometheus-data,target=/prometheus --mount type=bind,src=$(pwd)/prometheus.yml,target=/etc/prometheus/prometheus.yml \

prom/prometheus

 

6) 확인

 

hostip:9090 접속 후 status > target에서 연결 확인

graph 탭에서 Execute 왼쪽 둥근 모양 버튼을 누르면 정의된 쿼리를 찾아볼 수 있다.
테이블로 쿼리 조회모습
쿼리 결과를 그래프로 나타낸 모습

참고 :

https://severalnines.com/database-blog/how-monitor-mysql-containers-prometheus-deployment-standalone-and-swarm-part-one

반응형
728x90
반응형

1. 써멀구리스를 다 써서... 가성비로 유명한 ZF-12 8g 구매

2. Chrome OS 설치 이후 다용도가 된 z20t-B의 배터리
3. 노트북용 스탠드

반응형

'취미 > 지름' 카테고리의 다른 글

컴퓨터 시스템 변화가 조금 있습니다.  (0) 2021.06.05
한성 TFG5476H 구매  (0) 2020.07.31
728x90
반응형

재택 근무중 PC에서 kubectl을 사용해야하는 경우가 발생해 설정법을 정리합니다.

 

1. kubectl 다운 후 압축 해제(필요하다면 HELMv3도)

2. kubectl.exe 가 있는 폴더에 Path설정

찾기에서 고급 시스템 설정
환경 변수 클릭후 시스템변수(S)에서 Path를 찾은 후 편집

 

kubectl.exe가 들어있는 폴더를 찾아보기로 등록

3. 이후 powershell에서 kubectl 테스트

반응형

'엔지니어링 > Kubernetes' 카테고리의 다른 글

Helm SQL Storage Backend Test  (0) 2022.05.12
kustermize 설치  (0) 2022.04.12
helm 설치  (0) 2022.04.12
쿠버네티스 기본 네임스페이스 변경  (0) 2022.04.12
Ubuntu에 kubernetes 1.19.15버전 설치  (0) 2022.04.12

+ Recent posts