Oracle Cloud备忘
甲骨文云(Oracle Cloud) 提供永久免费的云vps,但是注册比较困难。注册成功后,如果选择的区域不好的话,也很难开出免费的vps。当你经历以上挫折后,好不容易有了一台vps,但是又出现了一些使用上的问题,那么本文有可能帮助到你
# 0. 丢失SSH私钥后,如何访问Server
提示
前提条件需要Server安装了Oracle Cloud Agent
- 到实例 (opens new window),开启堡垒(Bastion),等待服务变为
正在运行后,搜索堡垒,进入到堡垒配置页面

- 创建堡垒

这里的CIDR 块允许列表为后面你要通过ssh命令连接服务器的ip配置(你的公网ip或者其他服务器的ip)
- 创建会话

用户名输入服务器登陆的用户名,一般为opc、root等
然后选择丢失私钥的实例
关键步骤: 添加 SSH 密钥 选择 生成 SSH 密钥对 这时可以保存 私钥(应该是你丢失的那个)和公钥
高级选项中 如果更改了ssh的端口,则需要改成对应的端口
然后创建会话 等待状态变为活动
- 使用2步骤保存的私钥ssh连接服务器
在对应的会话后面点击后面的3个点,可以复制ssh命令 大致如下
# 其中要将以下2处<privateKey> 替换为 前一步骤下载的私钥地址
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.ap-singapore-1.amaaaaaazqshdeqa5b43vgevqvwztep65bcrrampru4hgyqnyrahs3mgimwa@host.bastion.ap-singapore-1.oci.oraclecloud.com" -p 22 opc@10.0.0.194
2
- 登陆之后 使临时公钥变为永久公钥
cd ~/.ssh
vi authorized_keys
# 然后你会看到一个#开头的注释,下面就是你前面第2步下载的公钥内容
# 你可以将公钥内容 复制一份或重新用私钥创建一个公钥,然后放到注释到上方。 因为注释下面的公钥内容会在会话时间到期后删除
2
3
4
- 然后你就可以正常的使用私钥进行登陆Server了(ssh端口需要在防火墙中放行)
ssh -i <privateKey> -p port opc@serverip
# 1. 开启账号密码登陆
默认情况下 oracle cloud server 是使用私钥登陆的。 先ssh登陆到对应的server
# 切换到root 如果不记得密码 sudo passwd 更改密码
su -
# 进入sshd 的配置目录,因为使用了配置覆盖 所以直接改/etc/ssh/sshd_config 无效
cd /etc/ssh/sshd_config.d/
# 查看目录下的文件 50-cloud-init.conf 类似xxx-init.conf的文件
ls -al
vi 50-cloud-init.conf
# 将PasswordAuthentication后的no 改为yes 然后保存
systemctl restart sshd
2
3
4
5
6
7
8
9
# 2. 更改ssh端口号
默认情况下 oracle cloud server 的ssh端口号是22 通常不安全 先ssh登陆到对应的server
# 切换到root 如果不记得密码 sudo passwd 更改密码
su -
# 进入sshd 的配置目录,因为使用了配置覆盖 所以直接改/etc/ssh/sshd_config 无效
cd /etc/ssh/sshd_config.d/
# 查看目录下的文件 50-cloud-init.conf 类似xxx-init.conf的文件
ls -al
vi 50-cloud-init.conf
# 增加Port 端口号 然后保存
# --------------oracle linux 操作 start---------------
# 如果防火墙开着的情况下 需要按顺序执行以下命令 默认防火墙是firewall
firewall-cmd --permanent --add-port=新端口/tcp
firewall-cmd --reload
# 查看防火墙策略
firewall-cmd --list-all
# 移除添加的特定端口
# firewall-cmd --permanent --remove-port=2222/tcp
# 修改 SELinux 策略
semanage port -a -t ssh_port_t -p tcp 新端口
# 查看SELinux策略允许的ssh端口
semanage port -l | grep ssh
# 修改 SELinux 的 SSH 端口映射,去掉其他端口,仅保留 你设置的新端口
semanage port -m -t ssh_port_t -p tcp 新端口
# --------------oracle linux 操作 end---------------
# 重启sshd服务
systemctl restart sshd
# 查看sshd端口是否生效
ss -tulpn | grep sshd
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
然后需要到Oracle cloud的网络策略中将新的端口放行 虚拟云网络 (opens new window) --> 对应的网络 --> 安全列表(左侧下面) --> 添加入站规则即可(具体参照老的22端口进行设置)
提示
仅当你使用新的端口成功连接ssh后,再退出已登陆的ssh,防止连不上服务器的情况
# 3. 增加块存储
甲骨文云 Oracle Cloud 的存储服务叫块存储卷,英文Block Volume,其实也就是常规云服务商的磁盘,其中分为块存储卷和引导卷.
这里只介绍增加块存储,引导卷扩容后貌似无法缩容,所以感觉不是很方便。
提示
免费用户只有200G的存储额度。(所有存储共享。包含引导卷和块存储)
- 访问块存储 (opens new window),创建块存储
输入名称
卷的大小和性能,可以选择定制,然后输入你想创建的大小(在免费额度内).性能可以拉满(免费用户)
然后点创建即可。 - 挂载
当状态变为
可用后,点击名称进入详情,左侧附加的实例,然后点击附加到实例,选择想加磁盘的实例即可。
- 初始化及使用
当状态变为
已附加后,点击后面的3个点,选择iSCSI 命令和信息。在弹出的页面中,复制附加命令。
然后ssh登陆Server执行复制的命令
# 切换到root 如果不记得密码 sudo passwd 更改密码
su -
# 附加命令执行完成后 可以使用 查看磁盘情况 可以看出多了一块/dev/sdb的新磁盘
fdisk -l
# 对磁盘格式化 /dev/sdb 根据 fdisk -l 中的新增磁盘路径适当调整
fdisk /dev/sdb
# 按 n 开始
n
# 选择 p 为主要分区
p
# 剩下的默认 回车 即可
w
# 结尾输入 w 来保存
# 再次执行fdisk -l看到已经分区为/dev/sdb1
# 将磁盘格式化为ext4 格式
mkfs.ext4 /dev/sdb1
# 创建挂在目录 将磁盘挂在到指定目录
mkdir /opt/backup
mount /dev/sdb1 /opt/backup
# 查看磁盘的uuid
blkid /dev/sdb1
# 设置开机自动挂载。。但没有成功 mount -a 来执行手动挂载
vi /etc/fstab
# 在最后一行添加
UUID=<UUID> /opt/backup ext4 defaults 0 0
# 重新加载服务单元配置文件
systemctl daemon-reload
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 4. 使用docker保活
oracle cloud 有闲置回收政策 (opens new window)
提示
闲置的始终免费的计算实例可以被Oracle回收。如果在7天期间,以下情况属实,Oracle将把虚拟机和裸机计算实例视为闲置。
第95百分位数的CPU利用率低于20%。 网络利用率低于20%。 内存利用率低于20%(仅适用于A1套餐)。
注意:本服务脚本仅占用 CPU 资源,甲骨文政策大概率满足其一即可。
原理很简单,就是写了一段最简单的循环计算 shell 脚本,在 alpine 容器内部执行。只需要控制 docker 的启动和停止即可。
mkdir keeporaclealive
cd keeporaclealive
vi docker-compose.yml
# 创建 keeporaclealive 目录并新建 docker-compose.yml 文件,复制以下配置文件。
2
3
4
docker-compose.yml
services:
keeporaclealive:
image: alpine
command: 'sh -c "while true; do for i in $$(seq 1 100000); do j=$$[i*i]; done; done"'
restart: always
2
3
4
5
然后可以使用以下命令进行启停
# 启动
docker-compose up -d
# 停止
docker-compose stop
2
3
4
启动后cpu占用率在30%左右,添加crontab,来进行定时起停,不用使cpu一直在占用
crontab -e
# 添加以下两条记录
20 9 * * * cd docker-compose.yml文件目录 && /usr/bin/docker compose up -d
25 15 * * * cd docker-compose.yml文件目录 && /usr/bin/docker compose stop
2
3
4
# 5. 防火墙关闭
提示
请明确知道你在干什么,再进行以下操作!!!
请明确知道你在干什么,再进行以下操作!!!
请明确知道你在干什么,再进行以下操作!!!
(仅测试时推荐关闭防火墙,不推荐正式环境关闭防火墙)
不同的系统,需要关闭的防火墙是不一样的,而且默认的镜像会开启各种防护,让你防不胜防 导致各种连接不上 请求不到的问题。当你关闭了Server的防火墙后只要保证Oracle Cloud的网络策略正常放行就可以正常访问了
- centos/oracle linux / redhat 等
# 切换到root 如果不记得密码 sudo passwd 更改密码
su -
# SELinux 只存在于 redhat体系等linux系统中
# 关闭 SELinux 将文件中的 SELINUX 改为 disabled 然后需要重启生效
vi /etc/selinux/config
# firewalld为默认的防火墙
systemctl stop firewalld
systemctl disable firewalld
# 重启使关闭 SELinux 生效
reboot
2
3
4
5
6
7
8
9
10
11
- ubuntu
# 切换到root 如果不记得密码 sudo passwd 更改密码
su -
# ufw 为ubuntu 的默认防火墙
ufw status
# 关闭 并停止开机启动
ufw disable
# Apparmor 等同与SELinux
# 查看状态
aa-status
# 彻底移除 其他的更改内核启动配置 禁用的方式 无法生效 。移除后需要重启生效
# systemctl stop apparmor # 停止 apparmor
# systemctl disable apparmor # 禁用 apparmor
apt remove apparmor apparmor-utils
# 清除iptables ubuntu还会设置iptables 开启了2个防火墙(坑,无敌!)
# 查看iptables配置的规则
iptables -L -v
# 完全清除iptables规则 更保险的方式来彻底清除iptables规则 自行问AI什么意思
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
# 重启服务器
reboot
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 6. centos7 更换源
由于centos7已经停止维护了,所以官方的yum源也已经删除了,需要更换为http://vault.centos.org源
# 备份原文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old
# 查看版本号
cat /etc/centos-release
# 创建新的仓库文件 其中7.9.2009为前一步显示的版本号,根据实际进行替换
vim /etc/yum.repos.d/CentOS-Base.repo
# 清理旧换成 生成新缓存
yum clean all
yum makecache
# 查看新仓库是否生效
yum repolist
2
3
4
5
6
7
8
9
10
11
CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 7. 1c1g低配机器优化(oracle linux系统)
优化出来150+M内存。低配机器 建议centos7、ubuntu系统。千万不要选oracle linux全是坑
# 移除旧的1g swap空间 新增2g swap空间
# 如果路径不对 使用 swapon --show 查看swap文件名称和路径
sudo swapoff /.swapfile
sudo rm -f /.swapfile
sudo fallocate -l 2G /.swapfile
sudo chmod 600 /.swapfile
sudo mkswap /.swapfile
sudo swapon /.swapfile
#开机自动挂在 默认文件名不改的话,不需要添加
# echo '/.swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 查看是否生效
free -h
# oracle cloud agent
sudo systemctl stop oracle-cloud-agent
sudo systemctl disable oracle-cloud-agent
# oracle cloud agent updater
sudo systemctl stop oracle-cloud-agent-updater
sudo systemctl disable oracle-cloud-agent-updater
# tuned 是一个动态系统调优守护进程,它根据预设的配置文件或实时负载来优化系统性能(例如CPU、I/O、网络等)。
sudo systemctl stop tuned
sudo systemctl disable tuned
# Performance Co-Pilot (PCP) 是一套强大的性能监控框架
sudo systemctl stop pmcd pmlogger pmie pmie_farm pmlogger_farm
sudo systemctl disable pmcd pmlogger pmie pmie_farm pmlogger_farm
# 然后重启
reboot
# 重启后 查看状态
sestatus
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29