gitlab 설치 관련(이슈 및 형상관리 프로그램) 리눅스

[ gitlab 설치 ]

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash


sudo EXTERNAL_URL=“192.168.0.10:80” 

yum install -y gitlab-ce

yum install -y  gitlab-ce-13.0.4-ce.0*


gitlab-ctl reconfigure

vi /etc/gitlab/gitlab.rb

gitlab-ctl reconfigure

gitlab-ctl stop / start / restart


[ gitlab 삭제 ]

gitlab-ctl uninstall 

gitlab-ctl cleanse 

gitlab-ctl remove-accounts 

yum -y remove gitlab-ce


[ gitlab 데이터 백업 ]

gitlab-rake gitlab:backup:create

/var/opt/gitlab/backups/1611051515_2021_01_19_13.0.4_gitlab_backup.tar


[ gitlab 데이터 복구 ]

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

gitlab-rake gitlab:backup:restore BACKUP=1611051515_2021_01_19_13.0.4

gitlab-ctl start

gitlab-rake gitlab:check SANITIZE=true


yum --installroot=/opt/linux/ install bash

yum --installroot=/DATA/gitlab install gitlab-ce-13.0.4*


[ gitlab 에러 사항 ]

/var/log/gitlab/gitlab-rails/production.log


Gitlab 프로젝트 “설정”-> CI / CD 접속 시 500에러 발생 문제 해결


# gitlab-rails dbconsole -e production

gitlabhq_production=> UPDATE projects SET runners_token = null, runners_token_encrypted = null;

gitlabhq_production=> UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;

gitlabhq_production=> UPDATE application_settings SET runners_registration_token_encrypted = null;

gitlabhq_production=> UPDATE ci_runners SET token = null, token_encrypted = null;


samba 사용자 생성/삭제 리눅스

samba 서버 사용자 생성/삭제


# 리눅스 사용자 생성

adduser UserID

# 사용자 그룹에 등록

usermod -a -G Group_Name UserID


# samba사용자 생성

smbpasswd -a UserID

# samba사용자 삭제

smbpasswd -x UserID


iptables ip 범위 오픈하기 리눅스

# 기존 방화벽 설정 모두 제거
iptables -F

# 20번부터 50번 IP 까지 80, 443번 포트 오픈
iptables -A INPUT -m iprange --src-range 192.168.100.20-192.168.100.50 -p tcp -m multiport --dport 80,443 -j ACCEPT

# 100번 IP 80, 443번 포트 오픈
iptables -A INPUT -m iprange --src-range 192.168.100.100 -p tcp -m multiport --dport 80,443 -j ACCEPT

#나머지 접속 차단
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j DROP

Mariadb 이중화(galera) - CentoOS7.x MySQL/MariaDB

# yum clean headers
# yum clean metadata
# yum clean packages

# vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos6-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

# vi /etc/yum.repos.d/percona.repo
[percona]
name = CentOS $releasever - Percona 
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/ 
enabled = 1 
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona 
gpgcheck = 1

# yum -y install MariaDB-client MariaDB-server MariaDB-devel galera(자동설치됨)


# /etc/init.d/mysql start
# mysql_secure_installation (root 비번설정)
# mysql -uroot -p

>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'replica' WITH GRANT OPTION;
Query OK, 0 rows affected (0.122 sec)
>GRANT ALL PRIVILEGES ON *.* TO 'replica'@'%' IDENTIFIED BY 'replica' WITH GRANT OPTION;
>FLUSH PRIVILEGES;


서버 1번 : /usr/bin/mysqld_safe --wsrep-new-cluster
서버 2번 : /etc/init.d/mysql start
        
>show status like 'wsrep%';
>show status like 'wsrep_cluster_size';
# mysqladmin -uroot -preplica shutdown


curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[maxscale]
# To use the latest stable release of MaxScale, use "latest" as the version
# To use the latest beta (or stable if no current beta) release of MaxScale, use "beta" as the version
name = MariaDB MaxScale
baseurl = https://downloads.mariadb.com/MaxScale/2.2/centos/$releasever/$basearch
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-MaxScale-GPG-KEY
gpgcheck = 1
enabled = 1

# yum install maxscale

# vi /etc/maxscale.cnf
[server1]
type=server
address=192.168.100.57
port=3306
protocol=MariaDBBackend

[server2]
type=server
address=192.168.100.56
port=3306
protocol=MariaDBBackend

[Read-Only-Service]
type=service
router=readconnroute
servers=server1
user=replica
passwd=replica
router_options=slave

[Read-Write-Service]
type=service
router=readwritesplit
servers=server1
user=replica
passwd=replica

# maxadmin list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status              
-------------------+-----------------+-------+-------------+--------------------
server1            | 192.168.100.57  |  3306 |           0 | Running
server2            | 192.168.100.56  |  3306 |           0 | Running
-------------------+-----------------+-------+-------------+--------------------

# maxadmin list listeners
Listeners.
--------------+---------------------+--------------------+-----------------+-------+--------
Name                 | Service Name        | Protocol Module    | Address         | Port  | State
--------------+---------------------+--------------------+-----------------+-------+--------
Read-Only-Listener   | Read-Only-Service   | MariaDBClient      | *               |  4008 | Running
Read-Write-Listener  | Read-Write-Service  | MariaDBClient      | *               |  4006 | Running
MaxAdmin-Listener    | MaxAdmin-Service    | maxscaled          | default         |     0 | Running
--------------+---------------------+--------------------+-----------------+-------+--------
=================================================

68.100.56' --datadir '/var/lib/mysql/'   --parent '28925'  ''  '''
2018-12-13 16:56:40 0 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.100.56' --datadir '/var/lib/mysql/'   --parent '28925'  ''  ''
        Read: ''innobackupex' not found in PATH'
2018-12-13 16:56:40 0 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.100.56' --datadir '/var/lib/mysql/'   --parent '28925'  ''  '': 2 (No such file or directory)
2018-12-13 16:56:40 2 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
2018-12-13 16:56:40 2 [ERROR] Aborting

Error in my_thread_global_end(): 1 threads didn't exit

# yum install ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/rudi_m:/devel-snap/CentOS_CentOS-6/x86_64/libev4-4.15-7.1.x86_64.rpm

# yum install -y percona-xtrabackup
# yum install -y https://forensics.cert.org/centos/cert/6/i386//socat-1.7.3.2-1.1.el6.i686.rpm
# chown -h mysql:mysql mysql
 

Mariadb 바이너리를 통한 듀얼마스터 구성 - CentOS7.x MySQL/MariaDB

https://downloads.mariadb.org/interstitial/mariadb-10.3.12/bintar-linux-x86_64/mariadb-10.3.12-linux-x86_64.tar.gz/from/http%3A//ftp.kaist.ac.kr/mariadb/
# tar -vxzf mariadb-10.3.12-linux-x86_64.tar.gz 
# mv mariadb-10.3.12-linux-x86_64 mariadb
# groupadd mysql
# useradd -g mysql mysql
# chown mysql.mysql -R mariadb
# cd /home/mysql/mariadb
# ./scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf
# support-files/mysql.server start --basedir=/home/mysql/mariadb --datadir=/home/mysql/mariadb/data
# ./bin/mysqladmin -u root password 'replica'

> GRANT file ON *.* TO replica@"%" IDENTIFIED BY 'replica';
> GRANT REPLICATION SLAVE  ON *.* TO replica@"%" IDENTIFIED BY 'replica';
> flush privileges;

# support-files/mysql.server stop --basedir=/home/mysql/mariadb --datadir=/home/mysql/mariadb/data
# support-files/mysql.server start --basedir=/home/mysql/mariadb --datadir=/home/mysql/mariadb/data

# master_log_file, master_log_pos는 show master status;로 값을 확인할 수 있음(*Master1,2 상대방 값을 입력)
# Master1
> change master to master_host='192.168.0.2', master_user='replica', master_password='replica', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=123;
> show slave status;

# Master2
> change master to master_host='192.168.0.1', master_user='replica', master_password='replica', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=234;
> show slave status;

[ 에러조치 - mariadb 실행시 에러 발생 ]
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
#yum install libaio
libaio-0.3.109-13.el7.x86_64.rpm
# find / -name libaio*
/usr/lib64/libaio.so.1
/usr/lib64/libaio.so.1.0.0
/usr/lib64/libaio.so.1.0.1
/usr/share/doc/libaio-0.3.109



ELK 한장으로 이해하기 (logstash+elasticsearch+kibana) 클라우드/빅데이터/가상화

네트워크 트래픽, 시스템 로그, WAS, WEB서버 로그, DBMS등 로그 데이터를
실시간 or 배치로 전송하여 검색엔진에 등록하고 웹에서 분석하는 환경이다.

elasticsearch의 경우 클라우드 설치가 가능하고 kibana를 통하여 시계열 분석도 가능하다.


beats -> logstash -> elasticsearch -> kibana 순으로 데이터가 흐른다. kibana는 시각화 툴이다.
beats 패키지를 수집하고자하는 각각의 서버에서 실행하고 logstash로 통합하는 환경을 많이 사용한다.
시스템 이중화는 HAproxy, nginx등을 이용하여 분배하면 된다


리눅스 삭제 파일 복구(extundelete) 리눅스

1. 패키지 다운로드 및 설치
wget http://sourceforge.net/projects/extundelete/files/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2
./configure 
yum install e2fsprogs-devel
make && make install

2. 복구하기
extundelete /dev/sda1 –restore-all
extundelete /dev/sda1 –restore-file /home/test/text.txt

3. 기타
/dev/sda1은 디스크 디바이스 마운트 정보입니다.
cat /etc/fstab에서 확인하고자하는 디바이스명이 뭔지 확인하세요.

DNS 캐시 서버 구축 리눅스

현재 사내 개발자가 7,80명정도이고 개발서버가 약 100대 가까운 상태에서
DNS 네트워크 트래픽이 13%~8%를 오간다.
향후 사용자가 2배로 늘어날 계획이라 DNS 캐시 서버를 시험으로 구축해봤다.

OS : CentOS 7.4

1. 패키지 설치
# yum install caching-nameserver

2. 설정 변경
# vi /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; any; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { localhost; any; };
        allow-query-cache     { localhost; any; };

        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

# vi /etc/resolv.conf
nameserver 192.168.0.61 -> DNS 캐시서버 자기 자신

named.conf파일 링크 생성
# ln -s /etc/named.conf /var/named/chroot/etc/named.conf

3. 서비스 실행
# systemctl restart named

4. 서버 재부팅 시 자동 실행
# chkconfig --level 35 named on
# systemctl list-unit-files |grep named
 named.service                                    enabled 

5. 캐시 확인
named.conf에 설정한 cache_dump.db 파일을 생성
# rndc dumpdb -all
db파일 확인
# vi cache_dump.db
캐시 삭제
# rndc flush

접속 확인
# dig @localhost www.google.com
# dig facebook.com

6. 클라이언트 설정
사내 PC에서 DNS를 192.168.0.61로 설정한다.

1 2 3 4 5 6 7 8 9 10 다음