Rancher概览
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
Rancher由以下四个部分组成:
基础设施编排
Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。
Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。
容器编排与调度
很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。
除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。
应用商店
Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。
企业级权限管理
Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。
下图展示了Rancher的主要组件和功能:
Docker Ubuntu容器安装ping
更新apt-get的软件包信息,然后再安装
sudo docker run ubuntu apt update
sudo docker run ubuntu apt install iputils-ping
Docker批量操作
docker rm -f $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
MySQL-查看执行情况
mysql系统变量分为全局变量和会话变量,全局变量的修改影响到整个服务器,会话变量修改只影响当前的会话。
- 查看log日志是否开启
show variables like ‘general_log’
set GLOBAL general_log=’ON’;
SET GLOBAL general_log_file = ‘/tmp/mysql.log’
不使用的时候记得关掉,否则会大量占用磁盘空间。
show processlist命令查看了当前正在执行的sql语句,同时可以查看用户的当前连接 - 查看慢日志
show variables like ‘%slow_query_log%’;
show variables like ‘long_query_time%’;设置慢日志记录什么样的SQL,默认10s
log-queries-not-using-indexes:未使用索引的查询也被记录到慢查询日志中,一般也开启这个变量
show status查看mysql运行状态(to learn)
比如查看mysql中有多少条慢查询记录: show global status like ‘%Slow_queries%’;
MySQL-Docker大小写敏感
- 查看当前状态
查看当前mysql的大小写敏感配置
show global variables like ‘%lower_case%’;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| lower_case_file_system | ON |
| lower_case_table_names | 0 |
+————————+——-+
lower_case_file_system
表示当前系统文件是否大小写敏感,只读参数,无法修改。
ON 大小写不敏感
OFF 大小写敏感 - 编辑docker内配置文件
进入docker的MySQL容器
编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:
[mysqld]
lower_case_table_names=1
保存,退出容器;
执行sudo docker restart MySQL ,重启MySQL即可查看:
MySQL数据库备份
需求:
- 每天4点备份mysql数据;
- 为节省空间,删除超过3个月的所有备份数据;
- 删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据;
#创建shell文件
vim backup_mysql.sh
mysqldump -uroot -p123456 –all-databases > /data/dbdata/mysqlbak/date +%Y%m%d
.sql
find /data/dbdata/mysqlbak/ -mtime +7 -name ‘[1-9].sql’ -exec rm -rf {} \;
find /data/dbdata/mysqlbak/ -mtime +92 -name ‘.sql’ -exec rm -rf {} \;
#创建定时任务
crontab –e
0 4 * /data/dbdata/backup_mysql.sh
记录关于技术的思考
一直想搭建一个自己的blog,这个想法从自己刚开始学习JAVA到现在自己已经走入中年大叔行列。
之间断断续续用solo/wp写了一段时间。申请了一个翻墙用的服务器,然后frps在本机搭建了一个博客用。但是维护成本太高。服务器,应用,frps,一个都不能down。实在懒得再维护了。【翻墙服务器性能太差,实在折腾不起java应用了】
而后听到一个说法,所用的商业模式的成功其实和技术的关系是不大的。既然我已经折腾过自己部署博客了就不想在搭建/环境维护上花太多时间了。毕竟我的目的只是想记录下自己技术的笔记和关于技术的思考。用什么技术实现记录的过程也就不太重要了。
现在的方案:
- 开发工具 hexo+next主题
- 内容编写 用markdownpad进行内容编辑
- 内容发布 使用SVN进行源码的管理 jenkins 定时扫描【分钟级】提交的更新 并推送到github
- 域名管理 域名托管在了CLOUDFLARE 并使用了 CLOUDFLARE的CDN【主要是搞不明白github自己的https要怎么配,懒得折腾了】
好了,现在环境已经搭建好了,给自己立一个flag,至少每周记录一下自己关于技术学习的思考或成功。