RC部署
mkfs
安装NFS
yum install -y nfs-utils rpcbind
/nfs/code *(rw)
权限不够,后面打开权限就可以
wordpress
yum isntall -y mariadb-server php php-fpm php-mysql php-gd
记不住写php*号
rpm -ivh gpmall-repo/packages/nginx
修改nginx配置文件 外网ip添加默认访问index.php和php方式访问 修改成工作目录
修改php配置文件/etc/php-fpm.d/www.conf 修改apache用户和组
启动各服务 “数据库 nginx php-fpm”
导入数据 授权
替换前端文件,修改config文件名并修改内容
报错查看/var/log/nginx/error.log
放通NFS端口
UDP:123
部署MongoDB数据库服务
[root@mysql-1 ~]# yum install -y mongodb-org
[root@mysql-2 ~]# yum install -y mongodb-org
[root@mysql-1 ~]# systemctl restart mongod
[root@mysql-2 ~]# systemctl restart mongod
mongodb 主从数据库,配置MongoDB 集群名称为 rs
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
yum install -y mongodb-org
systemctl start mongod
systemctl enable mongod
修改MongoDB配置文件 (两个都要改)
[root@mysql-1 ~]# vi /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0 # 修改
replication:
replSetName: rs #添加
启动服务
启动systemctl start mongod
systemctl enable mongod
进入
mongo --host ip地址 --port 端口号 的命令进行登录
数据库配置( 在mysql-1配置就可以了 )
登陆过后输入show dbs查看库会发现报错,是由于在更改命令之后并未进行初始化数据库的主从绑定
> use admin
switched to db admin
> config={ _id:"rs", members:[ {_id:0,host:'10.10.16.30:27017',priority:2}, {_id:1,host:'10.10.16.40:27017',priority:1}] }; #一定要写引号和端口
{
"_id" : "rs",
"members" : [
{
"_id" : 0,
"host" : "172.16.1.88:27017",
"priority" : 2 #可以不写
},
{
"_id" : 1,
"host" : "172.16.1.89:27017",
"priority" : 1
}
]
}
> rs.initiate(config) 初始化数据库
{ "ok" : 1 } 要显示ok 1
#报错把从配置文件主从配置去掉重启服务在从上进入库后执行db.dropDatabase(),清空所有的数据库,一个也不要留,直到show dbs为空
rs:SECONDARY> rs.status()
node 环境管理
使用提供的压缩文件 rocketchat-cloud.tar.gz 中软件包源,在 ChinaSkill-node-1 部署 nodejs,
根据 所提供 的 rocket.chat 所 需要求 安 装 nodejs 对 应版本。
tar xf node-v12.16.1-linux-x64.tar.gz
mv node-v12.16.1-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/* /usr/bin/
node -v
RocketChat 上云
使用 http 服务器提供的压缩文件 rocketchat-cloud.tar.gz 中的 RocketChat 软件包,在ChinaSkill-node-1 中部署 RocketChat 的 Web 服务。使用 chinaskill-sql-1 的 MongoDB 为后端数据库,设置 RocketChat 服务访问端口为 3000。
数据库主从同步
(3)、修改主库配置文件
log-bin:设置logbin文件名称,最好不要改动位置。
server-id:该id主从之间必须是唯一,唯一的标识。
binlog-ignore-db:指定不可以主从同步的数据库,多数据库则配置多行
/etc/my.cnf.d/server.cnf
[msyqld]
server-id=1
log-bin=mysql-bin
从库
[msyqld]
server-id=1
log-bin=mysql-bin
slave-skip-errors=all
登录主数据库设置主从同步用户
登录从数据库配置从配置 #help change #help change master to
change master to master_host='',master_user='',master_password='';
#记不住用help去搜
start slave; #help slave
查看 show status slave \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
看到这两个Yes就是正确了
读写分离
创建中间节点
安装java环境(服务器默认有,但不全,要重新下)
上传mycat包解压到/usr/loacl/下
上传schema.xml(比赛时提供)更换原有文件
修改mycat访问用户
/usr/local/mycat/conf/server.xml的最后删除user部分更改root密码用户,修改逻辑库名称
修改schema.xml逻辑库名称,读写分离库,读写IP用户密码(记得授予用户远程权限,并创建读写分离库)
验证(后面全是验证)
yum install mariadb -y
修改配置文件
#若题目要求数据库指向中间节点
修改nginx配置文件改成中间节点
登录本机8066端口访问读写分离库
mysql -h127.0.0.1 -P8066 -uroot -p000000
9066端口查看详情
mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
数据库迁移至公有云实例
修改配置文件改成公有云数据库实例
远程登录数据库导入库
备份数据库/result
msyqldump -uroot -pAbc@1234 wordpress > /result/mysql_bak.sql
扩容云硬盘
还需要进入Linux系统,进行文件系统的扩容
resize2fs /dev/vdb
df -TH
网上商城
域名解析
修改nginx配置文件 注:修改成公网地址
执行jar包 ps -ef
修改mysql密码
登录后
use mysql;
update user set password=password('Root12345') where user='root' and host='localhost';
部署 nodejs
安 装 nodejs 对 应 版 本
解压后建立node和npm软链接
部署Rocket.Chat
添加mongodb yum 源仓库
cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
安装mongodb, nodejs, graphicsmagick
yum install -y gcc-c++ make mongodb-org nodejs
yum install -y epel-release && sudo yum install -y GraphicsMagick
安装Rocket.Chat
下载源码
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzvf /tmp/rocket.chat.tgz -C /tmp
查看README 使用npm 安装inherits,n和Rocket.Chat要求的node版本
sudo npm install -g inherits n && sudo n 14.19.3
cd /tmp/bundle/programs/server && npm installs
sudo mv /tmp/bundle /opt/Rocket.Chath #可以考虑一开始安在/opt下
配置Rocket.Chat
sudo useradd rocketchat
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOFash
说明: 主要涉及的环境变量修改:MONGO_URL, MONGO_OPLOG_URL, ROOT_URL, PORT,可以将3000替换为选择的端口
vi /usr/lib/systemd/system/rocketchat.service
MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
ROOT_URL=http://your-host-name:3000
PORT=3000
将mongodb设为存储引擎,并启动mongodb和rocket.chat
sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
#mongod数据库的存储引擎,指定为mmapv1引擎
sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
sudo systemctl enable mongod && sudo systemctl start mongod
mongo --eval "printjson(rs.initiate())"
sudo systemctl enable rocketchat && sudo systemctl start rocketchat
查看README简单部署方式
$ (cd programs/server && npm install)
$ export MONGO_URL='mongodb://user:password@host:port/databasename'
$ export ROOT_URL='http://example.com'
$ export MAIL_URL='smtp://user:password@mailhost:port/'
$ node main.js
公有云安全:入侵检测系统
yum install gcc gcc-c++ make
yum install glibc-static
tar zxvf chkrootkit.tar.gz
安装 make sense
mv chkrootkit-0.52 /usr/local/chkrootkit #拷贝到安装目录
./chkrootkit | grep INFECTED
备注:CentOS 7.x 可能会出现下面的提示,原因是系统默认缺少netstat命令
chkrootkit: can't find `netstat'.
yum whatprovides *netstat #查看命令所在的安装包
yum install net-snmp-utils net-tools #安装netstat命令即可
安装完毕后使用 chkrootkit 工具扫描系统, 并将扫描结果保到/var/log/chkrootkit/chkrootkit.log
./chkrootkit > /var/log/chkrootkit/chkrootkit.log
helm
helm show valies chart名 #查看依赖 例如pv之类
helm install 名 chart名 #安装chart
helm package #打包
yum install 包名 -y --downloadonly --downloaddir=/usr/local/src
或以下方法
yum install yum-utils
yumdownloader ksh
指定目录
yumdownloader --resolve --destdir=/root/mypackages/ ksh
或者
yumdownloader --resolve --destdir /root/mypackages/ ksh
安装离线rpm
yum install *.rpm
或者
rpm -ivh *.rpm
hartmuseum 是一个开源的 Helm Chart Repository,支持多种后端存储,包括 GCS,S3 等。
# 这里是直接使用宿主机的目录,因而有两个注意的地方:
# 1. 存放 chart 的目录需要额外授权
# 2. 在 K8S 中需要固定 pod 所在宿主机,我这里选择的是 k8s-node01
# 在 k8s-node01 上执行
mkdir /data/charts && cd /data/ && chmod 777 charts
# 创建 deployment.yaml 文件
mkdir -p /data/chartmuseum/ && cd /data/chartmuseum/
vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: chartmuseum
name: chartmuseum
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: chartmuseum
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: chartmuseum
spec:
containers:
- image: chartmuseum/chartmuseum:latest
name: chartmuseum
ports:
- containerPort: 8080
protocol: TCP
env:
- name: DEBUG
value: "1"
- name: STORAGE
value: local
- name: STORAGE_LOCAL_ROOTDIR
value: /charts
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 64Mi
volumeMounts:
- mountPath: /charts
name: charts-volume
nodeSelector:
kubernetes.io/hostname: k8s-node01
volumes:
- name: charts-volume
hostPath:
path: /data/charts
type: DirectoryOrCreate
restartPolicy: Always
# 创建 service
vi service.yaml
apiVersion: v1
kind: Service
metadata:
name: chartmuseum
namespace: kube-system
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
app: chartmuseum
# 启动
kubectl apply -f .
# 检查
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
chartmuseum-7c976bc4c9-m2cdc 1/1 Running 0 57m
kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chartmuseum ClusterIP 10.104.6.194 <none> 8080/TCP 57m
# 成功显示欢迎信息
curl 10.104.6.194:8080
# 添加 helm repo
helm repo add chartmuseum http://10.104.6.194:8080
helm repo list
创建应用并上传到 chartmuseum
mkdir /root/helm && cd /root/helm
helm create myapp
# 留下有用的模板
cd /root/helm/myapp/templates
rm -rf ingress.yaml serviceaccount.yaml tests
# 修改 values.yaml
cd /root/helm/myapp
vi values.yaml
# serviceAccount 下的 create 改成 false
serviceAccount:
# Specifies whether a service account should be created
create: false
# service 下的 type 改成 NodePort
service:
type: NodePort
# 检查语法
cd /root/helm
helm lint myapp
# 打包
helm package myapp
# 上传
curl --data-binary "@myapp-0.1.0.tgz" http://10.104.6.194:8080/api/charts
通过 chartmuseum 安装软件
# 查找版本
helm search myapp
# 安装
helm install --name myapp chartmuseum/myapp
# 查看
helm list
helm status myapp
# 删除
helm del --purge myapp
更新 charts 并上传到 chartmuseum
cd /root/helm/myapp
vi values.yaml
# 调整 replicaCount 为 2
replicaCount: 2
vi Chart.yaml
# 把 version 改为 0.2.0
version: 0.2.0
# 测试,打包
cd /root/helm
helm lint myapp
helm package myapp
# 上传
curl --data-binary "@myapp-0.2.0.tgz" http://10.104.6.194:8080/api/charts
# 更新本地缓存然后可以查看已有的 charts:
helm repo update
helm search chartmuseum/
# 若之前没有删除,可以进行更新
helm upgrade myapp chartmuseum/myapp
# 回滚
helm rollback myapp 1
chartmuseum 通过 Ingress 对外提供服务
mkdir /data/ingress && cd /data/ingress
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
kubectl apply -f mandatory.yaml
# 检查
kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --watch
# 创建 chartmuseum ingress.yaml 文件
cd /data/chartmuseum/
vi ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: chartmuseum
namespace: kube-system
spec:
rules:
- host: charts.test.klvchen.com
http:
paths:
- path: /
backend:
serviceName: chartmuseum
servicePort: 8080
kubectl apply -f ingress.yaml
# 测试
kubectl get pod -n ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-7f74f657bd-wzhlr 1/1 Running 0 10m 10.244.0.10 k8s-master01 <none> <none>
# 添加一条记录
vi /etc/hosts
10.244.0.10 charts.test.klvchen.com
curl charts.test.klvchen.com
# 看到 Welcome to ChartMuseum! 证明 ingress-nginx 已生效
# 创建一个 svc,给 ingress-controller 接入流量
cd /data/ingress
vi service-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
nodePort: 30080
- name: https
port: 443
targetPort: 443
protocol: TCP
nodePort: 30443
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
externalTrafficPolicy: Cluster
kubectl apply -f service-nodeport.yaml
# 测试, 获取私有 IP
ifconfig eth0
curl -H 'host:charts.test.klvchen.com' 172.18.89.61:30080
# 最后可以安装一个 nginx,监听域名把流量转发到 K8S worker 上的 30080 端口上
- 点赞
- 收藏
- 关注作者
评论(0)