顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - netman

頁: 1 [2] 3 4 ... 499
31
將 redirection 的命令寫進 carte.sh 裏面呢?

32
先看看 log :

grep named /var/log/messages

33
如果 -i 後面沒設定,預設就是 {} , 不能隨便換哦...

kenny@linux-7vt3:~$ echo XXX | xargs -i echo aaaa {} bbb
aaaa XXX bbb
kenny@linux-7vt3:~$ echo XXX | xargs -i'--' echo aaaa -- bbb
aaaa XXX bbb
kenny@linux-7vt3:~$ echo XXX | xargs -i'-' echo aaaa - bbb
aaaa XXX bbb
kenny@linux-7vt3:~$ echo XXX | xargs -i'-' echo aaaa - bbb -
aaaa XXX bbb XXX

34
主機板電池可以換嗎?

35
我還真的沒遇到過呢...
不知道換 centos 試試會如何?

36
Linux 討論版 / Re: 关于磁盘分区的问题
« 於: 2019-05-29 20:29 »
如果全部砍光,重頭到尾只設一個分區呢?可以用到全保空間嗎?
亂砍沒關係,只要最後不要按 w 都行...
就算按了 w ,如果你照着原來的數字一模一樣重建,都還是沒影響的。

37
Linux 討論版 / Re: 关于磁盘分区的问题
« 於: 2019-05-28 19:49 »
繼續切就對了.... 不過已經切了3個 primary 分區了,可做的選項:
1. 剩下都全切給最後一個 primary
2. 剩下的全切給 extended, 然後再裏面切多個 logical

38
只要是 Hoyo 大講的都好,講什麼不重要!

39
Study-Area 公開討論版 / Re: 您好,酷学园
« 於: 2019-05-28 19:45 »
歡迎阿!

40
Windows 討論版 / Re: 关于parted分区
« 於: 2019-05-16 19:13 »
lsblk 先看看有哪些磁碟?

41
Linux 討論版 / Re: smtp with sasl & ssl/tls
« 於: 2019-05-13 23:05 »
先不管telnet,直接在 client 端安裝 cacert 看看?

43

Building a CEPH cluster with SSD cache

Author: netman<netman@study-area.org>
Date: 2019-05-09


1. 環境
  網路: 192.168.100.0/24
  作業系統:CentOS 7.6 (1810), 安裝套件: Server with GUI
  主機:
   node1: 192.168.100.21
   node2: 192.168.100.22
   node3: 192.168.100.23
   srv1:  192.168.100.1 (不參與 ceph cluster, 單純用來操作 ceph 部署)
  硬碟:
   node1:
      sda (SSD, 作 cache 用)
      sdb (HDD, 做 ceph storage 用)
   node2:
      sda (SSD, 作 cache 用)
      sdb (HDD, 做 ceph storage 用)
   node3:
      sdd (SSD, 作 cache 用)
      sdc (HDD, 做 ceph storage 用)



2. 必要前提條件
2.1 srv1 可以免用密碼直接 ssh 到三個 node 以 root 身份執行命令
2.2 全部主機關閉 firewalld 與 selinux
2.3 全部主機 /etc/hosts 都有彼此的名稱解析 (或透過 DNS)
2.4 全部主機執行過 yum update -y 更新到最新狀態
2.5 於所有主機安裝 epel repo:
   yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm



3. 執行安安裝與建置
(以下操作均於 srv1 完成)

# 建立 ceph-deploy repo
cat << EOM > /etc/yum.repos.d/ceph-deploy.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOM

# 安裝 ceph-deploy
yum install -y ceph-deploy

# 建立安裝目錄
mkdir my-cluster
cd my-cluster

# 建立初始 ceph.conf
cat > ceph.conf <<END
[global]
fsid = c8678875-c948-4d5c-b349-77868857150e
mon initial members = node1,node2,node3
mon host = 192.168.100.1,192.168.100.2,192.168.100.3
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
public network = 192.168.100.0/24
END

# 開始安裝
ceph-deploy install node1 node2 node3
ceph-deploy new node1 node2 node3
ceph-deploy mon create-initial
ceph-deploy admin node1 node2 node3
ceph-deploy mgr create node1 node2 node3
ceph-deploy mds create node1 node2 node3

# 確認所有主機可以執行 ceph -s 並確認狀態 OK
ssh node1 ceph -s
ssh node2 ceph -s
ssh node3 ceph -s

# 查看 node1 硬碟並確認磁碟名稱
ssh node1 lsblk

# 初始化 node1 硬碟
ceph-deploy disk zap node1 /dev/sda
ceph-deploy disk zap node1 /dev/sdb
ceph-deploy osd create --data /dev/sda node1
ceph-deploy osd create --data /dev/sdb node1

# 確認 node1 硬碟結果
ssh node1 lsblk

# 初始化 node2 硬碟:
ssh node2 lsblk
ceph-deploy disk zap node2 /dev/sda
ceph-deploy disk zap node2 /dev/sdb
ceph-deploy osd create --data /dev/sda node2
ceph-deploy osd create --data /dev/sdb node2
ssh node2 lsblk

# 初始化 node3 硬碟:
ssh node3 lsblk
ceph-deploy disk zap node3 /dev/sdd
ceph-deploy disk zap node3 /dev/sdc
ceph-deploy osd create --data /dev/sdd node3
ceph-deploy osd create --data /dev/sdc node3
ssh node3 lsblk


4. 設定 ceph cluster
# 以下操作在 node1 完成 (事實上在 cluster 中任何 node 中執行都可以)
ssh node1

# 確認 osd 狀態
ceph -s

# 計算 pg num
echo '(3*100)/3/6' | bc
## 公式:Total PGs = ((Total_number_of_OSD * 100) / max_replication_count) / pool_count
## 說明:環境中有總共6顆硬碟(3 x SSD + 3 x HDD),但因爲 SSD 會拿來做 cache 用,
##   因此我不太確定這裏應該用 3 個 OSD 還是 6 個?我先假設 3 個。
##   pool 的數量我這裏先假設 6 個
##    計算結果爲 16,但我在 HDD storage 中將調高爲 32

# 確認 osd class (應該會自動分配爲 ssd 與 hdd)
ceph osd crush class ls
ceph osd tree

# 建立 class rule
ceph osd crush rule ls
ceph osd crush rule create-replicated rule-ssd default host ssd
ceph osd crush rule create-replicated rule-hdd default host hdd
ceph osd crush rule ls

# 建立 ceph pool
## 說明:這裏我暫時不打算直接建 rbd 來使用,而是建立 cephfs 以 mount 的方式共享到全部主機,
##   一個 cephfs 需要兩個 pool: data-pool 與 metadata-pool, 名稱可以隨意命名,
##   我這裏打算將 metadata-pool 直接建在 SSD 上,而 data-pool 則設定爲使用 SSD 作 cache,
##   使用 SSD cache 是 ceph tier 的功能,有很多可以細調的地方,我這裏就全部略過了...
##   再來,我這裏規劃會建立兩個 ceph fs ,因此必須啓動 ceph fs 旗標 enable_multiple,
##   因此,我的 HDD storage 將會建立兩個 pool,但 SSD 則會建立四個 pool。

# 啓動旗標
ceph fs flag set enable_multiple true --yes-i-really-mean-it

# 建立第一個 cephfs
# 在 SSD 建 cache
ceph osd pool create fs1cache 16 16 rule-ssd
# 在 HDD 建 data-pool
ceph osd pool create fs1data 32 32 rule-hdd
# 在 SSD 建 metadata-pool
ceph osd pool create fs1metadata 16 16 rule-ssd
# 建 SSD cache
ceph osd tier add fs1data fs1cache
# 設定 cache 模式
ceph osd tier cache-mode fs1cache writeback
# 設定 cache hit_set_type
ceph osd pool set fs1cache hit_set_type bloom
# 建立 cephfs
ceph fs new fs1 fs1metadata fs1data

# 建立第二個 cephfs
ceph osd pool create fs2cache 16 16 rule-ssd
ceph osd pool create fs2data 32 32 rule-hdd
ceph osd pool create fs2metadata 16 16 rule-ssd
ceph osd tier add fs2data fs2cache
ceph osd tier cache-mode fs2cache writeback
ceph fs new fs2 fs2metadata fs2data

# 確認 pool 數量與名稱
ceph -s
ceph osd lspools


5. 掛載 CEPH FileSystem

# 以下在 node 1 執行
ssh node1

# 建立掛載點
mkdir /cepffs1 /cephfs2

# 提取 admin secret
awk '/key = /{print $NF}' /etc/ceph/ceph.client.admin.keyring > /etc/ceph/admin.secret

# 修改 fstab
# 說明: 我這裏的設計是,每一主機不直接連接自己的服務,而是分散連接其他主機。
#   由於是同一 ceph 節點下使用兩個不同的 fs,所以必須在 options 中以 mds_namespace 來指定 fs name
cat >>/etc/fstab << END
192.168.100.22:6789,192.168.100.23:6789:/ /cephfs1 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs1 0 0
192.168.100.22:6789,192.168.100.23:6789:/ /cephfs2 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs2 0 0
END

# 執行掛載(確認沒有 error)
mount -a

# 確認掛載
# 注意:如果用 df 命令只能看到其中一筆而已
mount

# 退出 node1
exit


# 以下在 node 2 執行
ssh node2
mkdir /cepffs1 /cephfs2
awk '/key = /{print $NF}' /etc/ceph/ceph.client.admin.keyring > /etc/ceph/admin.secret
cat >>/etc/fstab << END
192.168.100.21:6789,192.168.100.23:6789:/ /cephfs1 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs1 0 0
192.168.100.21:6789,192.168.100.23:6789:/ /cephfs2 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs2 0 0
END
mount -a
mount
exit


# 以下在 node 3 執行
ssh node3
mkdir /cepffs1 /cephfs2
awk '/key = /{print $NF}' /etc/ceph/ceph.client.admin.keyring > /etc/ceph/admin.secret
cat >>/etc/fstab << END
192.168.100.21:6789,192.168.100.22:6789:/ /cephfs1 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs1 0 0
192.168.100.21:6789,192.168.100.22:6789:/ /cephfs2 ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev,mds_namespace=fs2 0 0
END
mount -a
mount
exit

#---- END ----#


44
首先,你得有目標電腦的遠端帳號密碼。也就是您先用 ssh 連線確定是可以使用密碼的。
然後再將 ssh 換成 ssh-copy-id  這樣來複製 key 就好。

45
不同版本可能有不同的實作。
一般來說,default.target 也只不過是一個 soft link 文件而已。

46
Linux 討論版 / Re: shell脚本中的PATH问题
« 於: 2019-04-29 20:09 »
環境變量的問題,也建議您先搜尋一下“shell 十三問”,看完會比較有概念。
簡單來說,shell script 自己定義 PATH 的原因一般有兩個:
1. 不想繼承當前 shell 的 PATH
2. 確保 script 所用的 PATH 有被定義到

47
Linux 討論版 / Re: scp 無法復製
« 於: 2019-04-29 20:06 »
這個目前的資訊不好判斷,我猜會是權限的問題。

48
這個要瞭解一下 command line 格式會比較容易懂。
您可以先搜尋一下 "shell 十三問",關於命令行的部份有提到...
簡單來說, -- 後面的都歸類爲 argument, 而不會當作 option 來處理。

49
那有可能是你的 vi 開啓了備份模式?
一般來說,用圖形編輯器比較會出現...

50
用絕對路經,或當.前目錄:rm ./-xxxxx
也可以用 -- 來處理: rm -- -xxxxx

./ 就是當前工作目錄,因爲 linux 執行命令的時候會去找 $PATH 環境變數裏面的目錄去找相關執行檔,一般來說 $PATH 不建議包含 ./ 的,從嚴格的安全行爲守則來看的確如此。

51
你用什麼編輯器?

52
我不確定,只是看起來有點怪而已..

53
問題描述不夠清楚,比較不好判斷呢...

54
是 172.18 還是 172.16 ?

55
Linux 討論版 / Re: nfs問題
« 於: 2019-04-22 19:57 »
你不能把一個遠端的 nfs 再一次分享出去。
不過,你可以在 B 上面 export 一個目錄,然後讓 A 跟 C 去分享。

56
/etc/fstab 需要您自己手動增加要掛載的項目,他不是統計你目前的掛載。
先輸入 mount 不帶任何參數,在參考顯示得結果來修改 fstab 吧。

57
有 man 過了嗎?
       -d, --directory
              list directories themselves, not their contents

      -l     use a long listing format

       -s, --size
              print the allocated size of each file, in blocks


58
參考 LSB 的定義:
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

其實並沒分 user 身份的,有權限都可以寫入,就看程式怎定義了。

59
不知道 dhcp relay 有沒有設好?

60
Switching Cluster Using Context

Ref:
https://stackoverflow.com/questions/42170380/how-to-add-users-to-kubernetes-kubectl
https://kubernetes.io/docs/reference/access-authn-authz/rbac/
https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

Steps:

===== on master =====

1. create service acount:
代碼: [選擇]
cat > kenny_sa.yaml << END
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kenny
  namespace: kube-system
END
cat > kenny_clusterrole.yaml << END
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kenny
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - '*'
END
cat > kenny_rolebinding.yaml << END
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kenny
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kenny
subjects:
- kind: ServiceAccount
  name: kenny
  namespace: kube-system
END
kubectl create -f  kenny_sa.yaml
kubectl create -f kenny_clusterrole.yaml
kubectl create -f kenny_rolebinding.yaml

2. achieve and transfer access environment
代碼: [選擇]
u_name=$(kubectl -n kube-system get sa kenny -o jsonpath='{.secrets[].name}')
kubectl -n kube-system get secrets $u_name -o jsonpath='{.data.ca\.crt}' | base64 -d > kenny_ca.crt
kubectl -n kube-system get secrets $u_name -o jsonpath='{.data.token}' | base64 -d > kenny_token
name=$(kubectl config get-contexts $(kubectl config current-context) | tail -n 1 | awk '{print $3}')
kubectl config view -o jsonpath="{.clusters[?(@.name == \"$name\")].cluster.server}" > endpoint
scp scp kenny_token kenny_ca.crt endpoint <console_node>:

======== on console node ========
1. set env
代碼: [選擇]
endpoint=$(cat endpoint)
user_token=$(cat kenny_token)

2. set  context
代碼: [選擇]
kubectl config set-credentials kenny --token=$user_token
kubectl config set-context kenny-testlab --cluster=testlab --user=kenny --namespace=default
kubectl config use-context kenny-testlab

3. use context
代碼: [選擇]
kubectl config use-context kenny-testlab
kubectl config view
kubectl get nodes

Summary:
* on master:
  - create ServiceAccount, ClusterRole, RoleBinding
  - achieve and transfer env to console node: ca.crt, token, endpoint
* on console node:
  - set up cluster, credentials, context
  - run use-context

頁: 1 [2] 3 4 ... 499