發表於 程式分享

MySQL 8 replication安裝 (ubuntu 20.4)

 

1.安裝

https://j7.lb168.tw/2020/12/ubuntu-install-mysql-8-0-mysql-community-server/

https://dev.mysql.com/downloads/repo/apt/

wget https://repo.mysql.com//mysql-apt-config_0.8.19-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.19-1_all.deb
sudo apt update
sudo apt install mysql-community-client mysql-community-server

mysql -u root -p [ENTER]
=> 再輸入root密碼
show databases;

2.建資料庫

mysql -u root -p
USE `mysql`

-- 1.建資料庫 - portaldb
CREATE DATABASE `portaldb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- 2.權限
CREATE USER 'portalap'@'%' IDENTIFIED BY '!pwd.168!';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON `portaldb`.* to 'portalap'@'%';
--DROP USER 'k8sap'@'%'
--Mysql 8已不支援此指令
--GRANT ALL PRIVILEGES ON `portaldb`.* TO 'k8sap'@'%' IDENTIFIED BY '!pwd.168!' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
mysql -u root -p
USE `mysql`

-- 1.建資料庫 - datadb
CREATE DATABASE `datadb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- 2.權限
CREATE USER 'dataap'@'%' IDENTIFIED BY '!pwd.168!';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON `datadb`.* to 'dataap'@'%';
--DROP USER 'dataap'@'%'
--Mysql 8已不支援此指令
--GRANT ALL PRIVILEGES ON `datadb`.* TO 'dataap'@'%' IDENTIFIED BY '!pwd.168!' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

3.建立主從Replication

https://blog.toright.com/posts/5062/mysql-replication-主從式架構設定教學.html

https://www.itread01.com/content/1547349681.html

3-1.建repl user

https://www.modb.pro/db/29919

https://blog.csdn.net/wawa8899/article/details/86689618

#master
USE mysql;
CREATE USER 'replication'@'%' IDENTIFIED WITH 'mysql_native_password' BY '!pwd.168!';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

select user,host,plugin,authentication_string from user;

3-2. 設定master/slave my.cnf

? /etc/mysql/my.cnf
#master
sudo vi /etc/my.cnf

新增
[mysqld]
log-bin=mysql-bin
server-id=1

sudo systemctl restart mysql

#slave
sudo vi /etc/my.cnf

新增
[mysqld]
server-id=2

sudo systemctl restart mysql

3-3.設定slave連master參數

#master
SHOW MASTER STATUS;

#slave
CHANGE MASTER TO
MASTER_HOST='172.24.42.71',
MASTER_USER='replication',
MASTER_PASSWORD='!pwd.168!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3062;

SHOW SLAVE STATUS;

3-4.啟動replication

#slave
START SLAVE;
SHOW SLAVE STATUS;

註: 測試機裝node2,不建cluster (root password: 8888)

發表於 程式分享

GitLab安裝步驟(ubuntu 20.4)

1.Update system & install dependencies

sudo apt update
sudo apt upgrade -y
sudo apt install -y ca-certificates curl openssh-server

2.Configure Postfix Send-Only SMTP Server

https://computingforgeeks.com/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu/

#sudo hostnamectl set-hostname master.example.com
sudo apt install mailutils
    #Internet Site => OK => System mail name: master

sudo vi /etc/postfix/main.cf
#/etc/postfix/main.cf
inet_interfaces = loopback-only
myhostname = master
sudo systemctl restart postfix
#寄測試信
echo "Postfix Send-Only Server" | mail -s "Postfix Testing" huang.yahui.grace@gmail.com

3.Add the GitLab CE Repository

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list
#sudo apt-get install gitlab-ce
hadoop@master:~/elk$ cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list
# this file was generated by packages.gitlab.com for
# the repository at https://packages.gitlab.com/gitlab/gitlab-ce

deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main

4.Install GitLab CE on Ubuntu 20

sudo apt update
sudo apt -y install gitlab-ce
sudo vi /etc/gitlab/gitlab.rb
external_url 'http://master.example.com:8088'
sudo cat /etc/gitlab/gitlab.rb |grep -v ^$ |grep -v ^#
sudo systemctl stop ufw
sudo gitlab-ctl reconfigure
sudo gitlab-ctl status
# sudo chmod -R 755    /var/log/gitlab

執行結果

hadoop@master:~/elk$ sudo gitlab-ctl status
run: alertmanager: (pid 149845) 13s; run: log: (pid 147377) 612s
run: gitaly: (pid 149909) 10s; run: log: (pid 145835) 729s
run: gitlab-exporter: (pid 149797) 16s; run: log: (pid 147072) 631s
run: gitlab-workhorse: (pid 149768) 17s; run: log: (pid 146825) 650s
run: grafana: (pid 149871) 12s; run: log: (pid 149494) 45s
run: logrotate: (pid 145651) 744s; run: log: (pid 145669) 743s
run: nginx: (pid 146854) 647s; run: log: (pid 146912) 644s
run: node-exporter: (pid 149780) 17s; run: log: (pid 146987) 637s
run: postgres-exporter: (pid 149862) 13s; run: log: (pid 147424) 608s
run: postgresql: (pid 146040) 721s; run: log: (pid 146055) 720s
run: prometheus: (pid 149810) 15s; run: log: (pid 147257) 620s
run: puma: (pid 149837) 13s; run: log: (pid 146681) 662s
run: redis: (pid 145725) 738s; run: log: (pid 145742) 737s
run: redis-exporter: (pid 149799) 16s; run: log: (pid 147111) 626s
run: sidekiq: (pid 146694) 659s; run: log: (pid 146755) 656s
#查看Log
sudo gitlab-ctl tail postgresql

設定web root登入帳密

gitlab-rails console -e production
user = User.where(id: 1).first
user.password = '88888888'
user.password_confirmation = '88888888'
user.save
exit

註: 出現Http 502,是因跟zookeeper相衝-port 8080

#可調整 zookeeper.admin.serverPort
Ref. https://www.it1352.com/2182816.html
conf/zoo.cfg
admin.serverPort=9876 (default port : 8080)

5.Access GitLab CE Web Interface

https://computingforgeeks.com/how-to-install-gitlab-ce-on-ubuntu-linux/

https://zhuanlan.zhihu.com/p/338882906

https://zh.codepre.com/how-to-25529.html?__cf_chl_managed_tk__=pmd_40hZONm3XueVQul5s.Ad0TTVsTpj7S_fDFTZ7SlK4oI-1634027215-0-gqNtZGzNAuWjcnBszRL9

https://yehchitsai.gitbooks.io/linux-usage/content/download_gitlab.html

發表於 程式分享

微服務簡介

微服務是一種小型、可獨立部署、獨立擴展的軟件服務。目的是將特定功能封裝在更大的應用程序中、或是作為一應用程序進化的輔助支持。將應用程式分解為輕量級+解耦的服務,每個服務滿足特定業務需求,開發團隊更頻繁的部署應用及有效擴展。

以一種語言、框架無關的方式實現開發人員核心價值-編寫出更有差異化的軟體來提供更好的業務價值、度量指標收集問題。任何開發人員可基於微服務架構構建出以雲原生應用架構為基礎的任何應用程序,不必擔心網路影響到應用彈性、度量指標等問題

Java微服務框架
1.Hystrix: 熔斷
2.Ribbon: 客戶端Load Balance
3.Eureka: 服務註冊與發現
4.Zuul: 動態代理
缺點: 只能使用Java語言開發

Linux容器簡化應用程序打包/部署

容器為雲原生應用的基石: 應用容器化,開發/部署會更加敏捷、遷移更靈活、實現標準化。 容器編排可高效編排及利用資源,kubernetes編排容器服務已成為標準實踐,的在以API的方式進行擴展,並期望將任何高階的應用程序服務構建為插件

使用代理為將問題遷到基礎架構的一種方法,應用程序架構的7層服務代理為
1.重試
2.超時
3.熔斷
4.客戶端Load Balance
5.服務發現
6.安全性
7.指標收集