运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
DevOps实践

DevOps实践

云计算与自动化运维
Web架构

Web架构

高性能Web架构与运维
腾讯课堂-培训视频

腾讯课堂-培训视频

新加入腾讯课堂,欢迎来赞!
51CTO-培训视频

51CTO-培训视频

空杯心态,技术沉淀,技术成就梦想!
GitHub-运维社区

GitHub-运维社区

运维社区的GitHub,欢迎Star!
运维技术支持

运维技术支持

DevOps专家服务!运维故障应急,性能优化。

MySQL DAL(Data Access Layer)中间件总结

MySQL赵班长 发表了文章 • 0 个评论 • 42 次浏览 • 2016-12-10 13:53 • 来自相关话题

        DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer)。用在这里可能不是特别恰当,因为本文主要介绍MySQL访问的中间件,不过也是属于DAL的范畴。本文不会去高可用相关的知识,主要聚焦于MySQL的横向扩展。
       我们知道最简单的一种扩展是MySQL 主从复制,通过1主多从来实现读的性能扩展,但是这样的扩展不仅仅有局限性,而且写入的问题并没有解决。目前市场上用三类解决方案:
       1.客户端分片(推荐)
    程序客户端进行分库分表。也就是直接在程序里面进行数据库和表的拆分,例如用户表。根据用户的UID,例如13678789,根据最后一位,可以拆分为0-9共10个数据库,把尾号是0的存入db_user_0数据库,尾号是1的存入db_user_1数据库,select的时候也是一样。然后根据倒数第二位,可以拆分为0-9共10张表,根据倒数第二的尾号写入相应的表中。例如13678789这个UID的信息,写入db_user_9数据库的table_user_8的表中。
    
 2.各种数据成中间件:
 
  2.1 MySQL-Proxy(不强烈推荐)
      先说MySQL自己的,MySQL Proxy: 是处在你的MySQL数据库客户和服务端之间的程序,它还支持嵌入性脚本语言Lua。这个代理可以用来分析、监控和变换(transform) 通信数据。




    MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。






    2.2  Atlas(不强烈推荐)

    Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。






主要功能:
读写分离从库负载均衡 IP过滤自动分表DBA可平滑上下线DB自动摘除宕机的DB
     简单的说是在MySQL Proxy的基础上做了二次开发,并支持了自动分表的特性。但是仅支持非常有限的rang进行分表。目前有先的分支Atlas Sharding来实现更多的功能。

具体的功能清看Github,非常详细
https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

    2.3 Cobar(不强烈推荐)

      Cobar是阿里巴巴开源的一个,提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。
产品在阿里巴巴稳定运行3年以上。接管了3000+个MySQL数据库的schema。集群日处理在线SQL请求50亿次以上。集群日处理在线数据流量TB级别以上。






详情:https://github.com/alibaba/cobar/wiki

2.4 MyCAT(不强烈推荐)

     MyCAT基于阿里开源的Cobar产品而研发的,目前社区相对比较活跃,功能也是最多的一个MySQL中间件,
http://www.mycat.org.cn/
    什么是MYCAT
一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品一个新颖的数据库中间件产品





3.MySQL 集群

   3.1 MySQL Cluster(强烈不推荐)
      MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。几乎无应用案例,不推荐。






    3.2 Percona XtraDB Cluster方案(推荐)

    Percona XtraDB Cluster简称PXC。Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi-master的集群架构。




    上图中有三个实例,组成了一个集群,而这三个节点与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,这种一般称为multi-master架构,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。

    以上为个人生产经验,不代表产品本身的相关利益,不过还好了,都是开源的,大家可以根据自身情况选择。你会发现并没有强烈推荐的方案,主要是大家要考虑自身业务的情况进行选择,例如核心业务。连主从切换都不推荐自动,而是手动,宁愿业务不能访问,也不能出现自动主从切换导致数据丢失。
  查看全部
        DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer)。用在这里可能不是特别恰当,因为本文主要介绍MySQL访问的中间件,不过也是属于DAL的范畴。本文不会去高可用相关的知识,主要聚焦于MySQL的横向扩展。
       我们知道最简单的一种扩展是MySQL 主从复制,通过1主多从来实现读的性能扩展,但是这样的扩展不仅仅有局限性,而且写入的问题并没有解决。目前市场上用三类解决方案:
       1.客户端分片(推荐)
    程序客户端进行分库分表。也就是直接在程序里面进行数据库和表的拆分,例如用户表。根据用户的UID,例如13678789,根据最后一位,可以拆分为0-9共10个数据库,把尾号是0的存入db_user_0数据库,尾号是1的存入db_user_1数据库,select的时候也是一样。然后根据倒数第二位,可以拆分为0-9共10张表,根据倒数第二的尾号写入相应的表中。例如13678789这个UID的信息,写入db_user_9数据库的table_user_8的表中。
    
 2.各种数据成中间件:
 
  2.1 MySQL-Proxy(不强烈推荐)

      先说MySQL自己的,MySQL Proxy: 是处在你的MySQL数据库客户和服务端之间的程序,它还支持嵌入性脚本语言Lua。这个代理可以用来分析、监控和变换(transform) 通信数据。
mysql-proxy.jpg

    MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

mysql-proxy2.png


    2.2  Atlas(不强烈推荐)

    Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。

atlas.jpg


主要功能:
  1. 读写分离
  2. 从库负载均衡
  3.  IP过滤
  4. 自动分表
  5. DBA可平滑上下线DB
  6. 自动摘除宕机的DB

     简单的说是在MySQL Proxy的基础上做了二次开发,并支持了自动分表的特性。但是仅支持非常有限的rang进行分表。目前有先的分支Atlas Sharding来实现更多的功能。

具体的功能清看Github,非常详细
https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md

    2.3 Cobar(不强烈推荐)

      Cobar是阿里巴巴开源的一个,提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。
  • 产品在阿里巴巴稳定运行3年以上。
  • 接管了3000+个MySQL数据库的schema。
  • 集群日处理在线SQL请求50亿次以上。
  • 集群日处理在线数据流量TB级别以上。


cobar.jpg


详情:https://github.com/alibaba/cobar/wiki

2.4 MyCAT(不强烈推荐)

     MyCAT基于阿里开源的Cobar产品而研发的,目前社区相对比较活跃,功能也是最多的一个MySQL中间件,
http://www.mycat.org.cn/" rel="nofollow" target="_blank">http://www.mycat.org.cn/
    什么是MYCAT
  • 一个彻底开源的,面向企业应用开发的大数据库集群
  • 支持事务、ACID、可以替代MySQL的加强版数据库
  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
  • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
  • 一个新颖的数据库中间件产品

mycat.png


3.MySQL 集群

   3.1 MySQL Cluster(强烈不推荐)
      MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。几乎无应用案例,不推荐。

mysql-cluster.png


    3.2 Percona XtraDB Cluster方案(推荐)

    Percona XtraDB Cluster简称PXCPercona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi-master的集群架构。
pxc.png

    上图中有三个实例,组成了一个集群,而这三个节点与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,这种一般称为multi-master架构,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。

    以上为个人生产经验,不代表产品本身的相关利益,不过还好了,都是开源的,大家可以根据自身情况选择。你会发现并没有强烈推荐的方案,主要是大家要考虑自身业务的情况进行选择,例如核心业务。连主从切换都不推荐自动,而是手动,宁愿业务不能访问,也不能出现自动主从切换导致数据丢失。
 

培训实验环境准备

OpenStack赵班长 发表了文章 • 1 个评论 • 579 次浏览 • 2016-12-05 16:15 • 来自相关话题

实验环境

    标准化是云计算与自动化运维的基础,也是培训学好一门技术的基石。如果不然,结果往往是:聪明反被聪明误!有一种以为叫做你以为,有一种痛叫做痛过之后才知道有多痛。请培训时始终保持空杯心态,收益反而很大!





注意:所有参加培训的学员,如果环境未按要求进行:降低故障排除优先级!即所有按要求准备环境的学员的问题解答完毕后,再对未按要求进行准备的学员问题进行解答!!!
安装操作系统CentOS-7-x86_64。[list][*]基本系统:1VCPU+1024M内存+50G(动态)硬盘。网络选择:使用网络地址转换(NAT)。软件包选择:Minimal Install。关闭iptables和SELinux。

[/*]
[*]设置所有节点的主机名和IP地址,同时使用内部DNS或者/etc/hosts做好主机名解析。[/*]
[*]在linux-node1.example.com这台主机上下载CentOS7的ISO镜像文件。[/*]
[/list]
http://mirrors.aliyun.com/centos/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso

客户端工具
    需要在学员本地电脑上安装TightVNC Viewer客户端,用来连接虚拟机的VNC。

实验小技巧
    建议初学者保持实验环境和本课程一致,包括但不局限于IP地址,主机名,网卡名称等,可以为你节约很多因为环境问题的排错时间。    做好虚拟机的快照,比如可以根据本课程的不同章节,创建不同的快照,便于保留实验环境和在实验过程中进行环境的回滚。    请不要把关注点仅仅放在实验环节,一定要在理解的基础上完成实验。

环境准备案例

    如果你的默认NAT地址段不是192.168.56.0/24可以修改VMware Workstation的配置,点击编辑虚拟网络配置,然后进行配置。






1.设置主机名解析[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com2.安装EPEL仓库和常用命令[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel ... h.rpm
[root@linux-node1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump3.关闭NetworkManager和防火墙[root@linux-node1 ~]# systemctl disable firewalld
[root@linux-node1 ~]# systemctl stop NetworkManager4.关闭SELinux[root@linux-node1 ~]# vim /etc/sysconfig/selinux
SELINUX=disabled #修改为disabled检查结果如下[root@linux-node1 ~]# getsebool
getsebool: SELinux is disabled5.更新系统并重启[root@linux-node1 ~]# yum update -y && reboot
!!!注意:所有参加培训的学员,如果环境未按要求进行:降低故障排除优先级!即所有按要求准备环境的学员的问题解答完毕后,再对未按要求进行准备的学员问题进行解答!!!

操作系统安装:
    为了统一环境,保证实验的通用性,将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则。所以需要在安装的时候,增加内核参数。
    1)光标选择“Install CentOS 7”






2)点击Tab,打开kernel启动选项后,增加net.ifnames=0 biosdevname=0,如下图所示。






  查看全部
实验环境

    标准化是云计算与自动化运维的基础,也是培训学好一门技术的基石。如果不然,结果往往是:聪明反被聪明误!有一种以为叫做你以为,有一种痛叫做痛过之后才知道有多痛。请培训时始终保持空杯心态,收益反而很大!

1.jpg

注意:所有参加培训的学员,如果环境未按要求进行:降低故障排除优先级!即所有按要求准备环境的学员的问题解答完毕后,再对未按要求进行准备的学员问题进行解答!!!


  • 安装操作系统CentOS-7-x86_64。[list][*]基本系统:1VCPU+1024M内存+50G(动态)硬盘。
  • 网络选择:使用网络地址转换(NAT)。
  • 软件包选择:Minimal Install。
  • 关闭iptables和SELinux。


[/*]
[*]设置所有节点的主机名和IP地址,同时使用内部DNS或者/etc/hosts做好主机名解析。[/*]
[*]在linux-node1.example.com这台主机上下载CentOS7的ISO镜像文件。[/*]
[/list]
http://mirrors.aliyun.com/centos/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso

客户端工具
    需要在学员本地电脑上安装TightVNC Viewer客户端,用来连接虚拟机的VNC。

实验小技巧
  •     建议初学者保持实验环境和本课程一致,包括但不局限于IP地址,主机名,网卡名称等,可以为你节约很多因为环境问题的排错时间。
  •     做好虚拟机的快照,比如可以根据本课程的不同章节,创建不同的快照,便于保留实验环境和在实验过程中进行环境的回滚。
  •     请不要把关注点仅仅放在实验环节,一定要在理解的基础上完成实验。


环境准备案例

    如果你的默认NAT地址段不是192.168.56.0/24可以修改VMware Workstation的配置,点击编辑虚拟网络配置,然后进行配置。

1.png


1.设置主机名解析
[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com
2.安装EPEL仓库和常用命令
[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel ... h.rpm
[root@linux-node1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump
3.关闭NetworkManager和防火墙
[root@linux-node1 ~]# systemctl disable firewalld
[root@linux-node1 ~]# systemctl stop NetworkManager
4.关闭SELinux
[root@linux-node1 ~]# vim /etc/sysconfig/selinux
SELINUX=disabled #修改为disabled
检查结果如下
[root@linux-node1 ~]# getsebool 
getsebool: SELinux is disabled
5.更新系统并重启
[root@linux-node1 ~]# yum update -y && reboot

!!!注意:所有参加培训的学员,如果环境未按要求进行:降低故障排除优先级!即所有按要求准备环境的学员的问题解答完毕后,再对未按要求进行准备的学员问题进行解答!!!

操作系统安装:
   
为了统一环境,保证实验的通用性,将网卡名称设置为eth*,不使用CentOS 7默认的网卡命名规则。所以需要在安装的时候,增加内核参数。
    1)光标选择“Install CentOS 7”


1.png


2)点击Tab,打开kernel启动选项后,增加net.ifnames=0 biosdevname=0,如下图所示。


2.png


 

菜鸟运维怎么从月薪2000做到年薪50w(含运维成长必备技能)

运维杂谈thisiszh 回复了问题 • 22 人关注 • 12 个回复 • 4706 次浏览 • 2016-11-23 11:26 • 来自相关话题

ubuntu怎么让普通用户使用80端口

默认分类赵班长 回复了问题 • 2 人关注 • 1 个回复 • 139 次浏览 • 2016-11-20 08:29 • 来自相关话题

OpenStack手动制作CentOS 7 KVM镜像

OpenStack赵班长 发表了文章 • 0 个评论 • 211 次浏览 • 2016-11-16 14:51 • 来自相关话题

在前面讲解KVM的时候,我们已经学习了如何制作KVM镜像,那么制作OpenStack使用的镜像和KVM是有一些区别的。

1.    下载CentOS 7官方ISO安装镜像
这里使用国内阿里云的镜像源进行下载:http://mirrors.aliyun.com/centos
http://mirrors.aliyun.com/cent ... 1.iso

2.    创建虚拟机磁盘镜像[root@linux-node1 src]# qemu-img create -f qcow2 /tmp/CentOS-7-x86_64.qcow2 10G
Formatting '/tmp/CentOS-7-x86_64.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
3.    开始手动安装虚拟机[root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 \
--ram 2048 --disk /tmp/CentOS-7-x86_64.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel7 \
--cdrom=/usr/local/src/CentOS-7-x86_64-DVD-1511.iso如果需要使用已经存在的桥接网卡,可以使用--network bridge=brq-name来使用。

4.    安装过程省略,注意在进行磁盘分区的时候可以使用默认的LVM,也可以自定义分区结构。针对虚拟机的建议是只分配一个根分区/,不创建其它分配和swap分区。安装成功后,点击reboot,注意并不会重启,需要我们手动启动:[root@backup ~]# yum list | grep virt
[root@backup ~]# virsh list --all
Id Name State
----------------------------------------------------
- CentOS-7-x86_64 shut off

[root@backup ~]# virsh start CentOS-7-x86_64
Domain CentOS-7-x86_64 started
virsh start CentOS-7-x86_64启动完毕后,我们再连接到虚拟机上。
5.    安装 ACPI 服务
    启动后,你可能需要手动配置你的虚拟机的网络。为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务。
在 CentOS虚拟机内运行以下命令安装 ACPI 服务并配置为系统启动时自动启动。# yum install acpid
# systemctl enable acpid6.    配置获取metadata
    虚拟机在启动的时候需要和元数据服务交互以便完成几个任务,例如,虚拟机必须获取ssh公钥以及运行用户数据脚本。确保虚拟机能完成这些任务,使用以下几个方法之一:
?    安装从 Ubuntu cloud-init 移植过来的cloud-init RPM包,这也是推荐的方法。
?    修改 /etc/rc.local 文件从元数据服务获取信息。
    使用 cloud-init 获取公钥
cloud-init 包自动从元数据服务获取公钥并保存到账户,你可以在 CentOS虚拟机添加 EPEL 安装源来安装 cloud-init 包。# rpm -ivh http://mirrors.aliyun.com/epel ... h.rpm
# yum install cloud-init
7.    清除MAC地址相关信息:
操作系统会在/etc/sysconfig/network-scripts/ifcfg-eth0 和
/etc/udev/rules.d/70-persistent-net.rules 这类文件记录下网卡MAC地址,但是,虚拟机的网卡MAC地址在每次虚拟机创建的时候都会不同,因此这些信息必须从配置文件删除掉。

8.    其它标准化操作:
可以把所有虚拟机都需要进行的设置在镜像这一级全部设置完毕。例如:比如关闭SElinux、firewalld、postfix。以及设置内网DNS,安装相关的Agent等。
9.    收尾工作
最后,你可以关闭虚拟机了,如果以后不在需要该虚拟机也可以直接删除。建议是保留,方便后期进行虚拟机镜像的定制。
10.    上传镜像到Glance# glance image-create --name "CentOS-7-x86_64" --disk-format qcow2 --container-format bare --file /tmp/CentOS-7-x86_64.qcow2 --visibility public --progress

  查看全部
在前面讲解KVM的时候,我们已经学习了如何制作KVM镜像,那么制作OpenStack使用的镜像和KVM是有一些区别的。

1.    下载CentOS 7官方ISO安装镜像
这里使用国内阿里云的镜像源进行下载:http://mirrors.aliyun.com/centos
http://mirrors.aliyun.com/cent ... 1.iso

2.    创建虚拟机磁盘镜像
[root@linux-node1 src]# qemu-img create -f qcow2 /tmp/CentOS-7-x86_64.qcow2 10G
Formatting '/tmp/CentOS-7-x86_64.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off

3.    开始手动安装虚拟机
[root@linux-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 \
--ram 2048 --disk /tmp/CentOS-7-x86_64.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel7 \
--cdrom=/usr/local/src/CentOS-7-x86_64-DVD-1511.iso
如果需要使用已经存在的桥接网卡,可以使用--network bridge=brq-name来使用。

4.    安装过程省略,注意在进行磁盘分区的时候可以使用默认的LVM,也可以自定义分区结构。针对虚拟机的建议是只分配一个根分区/,不创建其它分配和swap分区。安装成功后,点击reboot,注意并不会重启,需要我们手动启动:
[root@backup ~]# yum list | grep virt
[root@backup ~]# virsh list --all
Id Name State
----------------------------------------------------
- CentOS-7-x86_64 shut off

[root@backup ~]# virsh start CentOS-7-x86_64
Domain CentOS-7-x86_64 started
virsh start CentOS-7-x86_64
启动完毕后,我们再连接到虚拟机上。
5.    安装 ACPI 服务
    启动后,你可能需要手动配置你的虚拟机的网络。为了让虚拟化层能重启和关闭虚拟机,必须在虚拟机内安装并运行 acpid 服务。
在 CentOS虚拟机内运行以下命令安装 ACPI 服务并配置为系统启动时自动启动。
# yum install acpid
# systemctl enable acpid
6.    配置获取metadata
    虚拟机在启动的时候需要和元数据服务交互以便完成几个任务,例如,虚拟机必须获取ssh公钥以及运行用户数据脚本。确保虚拟机能完成这些任务,使用以下几个方法之一:
?    安装从 Ubuntu cloud-init 移植过来的cloud-init RPM包,这也是推荐的方法。
?    修改 /etc/rc.local 文件从元数据服务获取信息。
    使用 cloud-init 获取公钥
cloud-init 包自动从元数据服务获取公钥并保存到账户,你可以在 CentOS虚拟机添加 EPEL 安装源来安装 cloud-init 包。
# rpm -ivh http://mirrors.aliyun.com/epel ... h.rpm

# yum install cloud-init
7.    清除MAC地址相关信息:
操作系统会在/etc/sysconfig/network-scripts/ifcfg-eth0 和
/etc/udev/rules.d/70-persistent-net.rules 这类文件记录下网卡MAC地址,但是,虚拟机的网卡MAC地址在每次虚拟机创建的时候都会不同,因此这些信息必须从配置文件删除掉。

8.    其它标准化操作:
可以把所有虚拟机都需要进行的设置在镜像这一级全部设置完毕。例如:比如关闭SElinux、firewalld、postfix。以及设置内网DNS,安装相关的Agent等。
9.    收尾工作
最后,你可以关闭虚拟机了,如果以后不在需要该虚拟机也可以直接删除。建议是保留,方便后期进行虚拟机镜像的定制。
10.    上传镜像到Glance
# glance image-create --name "CentOS-7-x86_64" --disk-format qcow2 --container-format bare --file /tmp/CentOS-7-x86_64.qcow2 --visibility public --progress

 

OpenStack制作Windows 2008 KVM镜像

OpenStack赵班长 发表了文章 • 0 个评论 • 128 次浏览 • 2016-11-16 14:45 • 来自相关话题

1.下载驱动程序[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget
https://launchpad.net/kvm-gues ... ar.gz
[root@linux-node1 src]# tar zxf virtio-win-full-20120712.tar.gz
[root@linux-node1 src]# cd virtio-win-full-20120712
2.创建虚拟磁盘.[root@linux-node1 opt]# qemu-img create -f raw /opt/windows-2008-x86_64.raw 10G
3.启动安装程序,加载硬盘驱动[root@linux-node1 opt]# virt-install --virt-type kvm --name windows2008 --ram 1024 --cdrom /opt/windows-2008-x86_64.iso --disk path=/opt/windows-2008-x86_64.raw,device=disk,bus=virtio --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=windows --disk path=/opt/virtio-win-drivers-20120712-1.vfd,device=floppy --os-type=windows --os-variant win2k8 --boot cdrom
(注:如果无法自动加载驱动程序,请手动选择软盘里面的驱动程序,加载硬盘驱动。)
4.重启虚拟机,加载网卡驱动[root@linux-node1 opt]# /usr/libexec/qemu-kvm -m 1024 -drive file=/opt/windows-2008-x86_64.raw -cdrom /opt/virtio-win-drivers-20120712-1.iso -net nic,model=virtio -net user -boot order=c -usbdevice tablet -nographic -vnc :0
5.进行系统定制(略)

6.上传Glance(略) 查看全部
1.下载驱动程序
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget
https://launchpad.net/kvm-gues ... ar.gz
[root@linux-node1 src]# tar zxf virtio-win-full-20120712.tar.gz
[root@linux-node1 src]# cd virtio-win-full-20120712

2.创建虚拟磁盘.
[root@linux-node1 opt]# qemu-img create -f raw /opt/windows-2008-x86_64.raw 10G

3.启动安装程序,加载硬盘驱动
[root@linux-node1 opt]# virt-install --virt-type kvm --name windows2008 --ram 1024 --cdrom /opt/windows-2008-x86_64.iso --disk path=/opt/windows-2008-x86_64.raw,device=disk,bus=virtio  --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=windows --disk path=/opt/virtio-win-drivers-20120712-1.vfd,device=floppy  --os-type=windows --os-variant win2k8 --boot cdrom

(注:如果无法自动加载驱动程序,请手动选择软盘里面的驱动程序,加载硬盘驱动。)


4.重启虚拟机,加载网卡驱动
[root@linux-node1 opt]# /usr/libexec/qemu-kvm -m 1024 -drive file=/opt/windows-2008-x86_64.raw  -cdrom /opt/virtio-win-drivers-20120712-1.iso -net nic,model=virtio -net user -boot order=c -usbdevice tablet -nographic -vnc :0

5.进行系统定制(略)

6.上传Glance(略)

双11,云计算与自动化运维培训视频都6折!

OpenStack赵班长 发表了文章 • 0 个评论 • 185 次浏览 • 2016-11-11 09:58 • 来自相关话题

    每年双11,老婆/女朋友买买买,作为技术人,也需要补充补充能力!

    赵班长课程中心:云计算与自动化运维课程:






http://edu.51cto.com/lecturer/index/user_id-1110045.html 查看全部
    每年双11,老婆/女朋友买买买,作为技术人,也需要补充补充能力!

    赵班长课程中心:云计算与自动化运维课程:

1.jpg


http://edu.51cto.com/lecturer/index/user_id-1110045.html

《中国SaltStack用户组》2016技术分享活动【免费】

SaltStack赵班长 发表了文章 • 2 个评论 • 218 次浏览 • 2016-11-09 15:16 • 来自相关话题

虽然是免费活动,但是我们很认真,请确认能够准时参加后报名!

活动介绍【免费社区活动,友好交流,相互学习!】






分享嘉宾【纯干货,无尿点!】







报名地址: http://www.bagevent.com/event/272186 查看全部
虽然是免费活动,但是我们很认真,请确认能够准时参加后报名!

活动介绍【免费社区活动,友好交流,相互学习!】

1708317507999.jpg


分享嘉宾【纯干货,无尿点!】

1714398437999.jpg



报名地址: http://www.bagevent.com/event/272186

openstack如何设置cpu和内存的超配,比例是多少?

OpenStack赵班长 回复了问题 • 3 人关注 • 1 个回复 • 216 次浏览 • 2016-11-07 17:04 • 来自相关话题

使用TiDB为Zabbix构建分布式MySQL数据库支持

MySQL赵班长 发表了文章 • 0 个评论 • 692 次浏览 • 2016-10-27 11:13 • 来自相关话题

     当我们在生产上部署Zabbix进行企业级监控后,随着监控规模的扩大和时间的变化,MySQL逐渐会成为Zabbix的瓶颈,很多大的企业开始着手进行MySQL表分区、数据清理与优化,甚至来实现Zabbix数据库的分库分表。这些都让运维管理的复杂度大大增加。
     当Zabbix遇上Tidb,一段美好的故事,就此展开!

TiDB介绍
    TiDB 是一个分布式 NewSQL 数据库。支持水平扩展、高可用、ACID 事务、SQL 等特性。同时 TiDB 还支持 MySQL 语法和 MySQL 协议。
    TiDB项目地址:https://github.com/pingcap/tidb  
    由PingCAP公司开发并开源:https://github.com/pingcap/tidb
    对于熟悉Codis的小伙伴们来说,就更好解释了,就是当初豌豆荚开发Codis的团队出来创业组建的。
   
TiDB项目架构:





TiDB部署
    详细的内容请看github上的中文手册。来了解并部署TiDB。
https://github.com/pingcap/docs-cn

TiDB在Zabbix使用中授权注意事项
       这里不会去介绍Zabbix Server的安装步骤,有几个注意事项需要说明下。
        1.注意:在Tidb授权的时候,不能直接使用grant授权并设置密码。应该使用下面的方式。MySQL [(none)]> create user 'zabbix'@'192.168.99.0/255.255.255.0' identified by 'zabbix';
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> grant all on zabbix.* to 'zabbix'@'192.168.99.0/255.255.255.0';
Query OK, 2 rows affected (0.01 sec)

注意:TiDB 支持对用户授权,这里只是支持授权语法,并且记录在系统表中。但是实际上只对 DropTable 语句进行权限检查,对其他的语句并不会做权限检查。实现用户授权主要是为了兼容已有的 MySQL 业务。 请参考:https://github.com/pingcap/docs-cn/blob/master/faq.md

  2.TiDB在创建Zabbix表结构的时候会比较慢
    当我们初始化安装创建Zabbix表结构的时候,会发现卡住迟迟不动,这主要是TiDB的设计方式,为了数据的一致性和业务不受影响,DDL操作会比较慢。zcat create.sql.gz | mysql -h 192.168.99.x -P 4000 -uzabbix -pzabbix zabbix

官方是这么介绍的:TiDB 实现了 Google F1 的在线 Schema 变更算法(具体参见 F1 论文 和我们的一篇 Blog)。 一般情况下,DDL 并不是一个频繁的操作,我们首先要保证的是数据的一致性以及线上业务不受影响。一个完整的 DDL 过程会有 2 到 5 个阶段(取决于语句类型),每个阶段至少会执行 2*lease 时间,假设 lease 设为 1分钟,对于 Drop Table 语句(需要两个阶段),会执行 2*2*1 = 4 分钟。除此之外,DDL 的时间还取决其他的条件,比如做 Add Index 操作时,表中已有的数据量是影响 DDL 时间的主要因素。我们也了解过 Google 内部在 F1 上是如何做 DDL,一般是提交给 DBA,DBA 再通过专用的工具执行,执行的时间会很长。

    耐心的等待着哦!如果不放心,可以use zabbix;show tables;看看表是不是在不停的增长!喝杯咖啡吧,这可能是一个漫长的过程。

TiDB运维技术交流QQ群:
群名称:TiDB技术交流群群   号:463640808





        近期我也在不停的测试TiDB,并持续给官方进行反馈,有兴趣的小伙伴环境,加入一起交流TiDB在生产环境中的使用经验。
  查看全部
     当我们在生产上部署Zabbix进行企业级监控后,随着监控规模的扩大和时间的变化,MySQL逐渐会成为Zabbix的瓶颈,很多大的企业开始着手进行MySQL表分区、数据清理与优化,甚至来实现Zabbix数据库的分库分表。这些都让运维管理的复杂度大大增加。
     当Zabbix遇上Tidb,一段美好的故事,就此展开!

TiDB介绍
    TiDB 是一个分布式 NewSQL 数据库。支持水平扩展、高可用、ACID 事务、SQL 等特性。同时 TiDB 还支持 MySQL 语法和 MySQL 协议。
    TiDB项目地址:https://github.com/pingcap/tidb  
   
由PingCAP公司开发并开源:https://github.com/pingcap/tidb
    对于熟悉Codis的小伙伴们来说,就更好解释了,就是当初豌豆荚开发Codis的团队出来创业组建的。
   
TiDB项目架构:
architecture.png


TiDB部署
    详细的内容请看github上的中文手册。来了解并部署TiDB。
https://github.com/pingcap/docs-cn

TiDB在Zabbix使用中授权注意事项
      
这里不会去介绍Zabbix Server的安装步骤,有几个注意事项需要说明下。
        1.注意:在Tidb授权的时候,不能直接使用grant授权并设置密码。应该使用下面的方式。
MySQL [(none)]> create user 'zabbix'@'192.168.99.0/255.255.255.0' identified by 'zabbix';
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> grant all on zabbix.* to 'zabbix'@'192.168.99.0/255.255.255.0';
Query OK, 2 rows affected (0.01 sec)


注意:TiDB 支持对用户授权,这里只是支持授权语法,并且记录在系统表中。但是实际上只对 DropTable 语句进行权限检查,对其他的语句并不会做权限检查。实现用户授权主要是为了兼容已有的 MySQL 业务。 请参考:https://github.com/pingcap/docs-cn/blob/master/faq.md


  2.TiDB在创建Zabbix表结构的时候会比较慢
    当我们初始化安装创建Zabbix表结构的时候,会发现卡住迟迟不动,这主要是TiDB的设计方式,为了数据的一致性和业务不受影响,DDL操作会比较慢。
zcat create.sql.gz | mysql -h 192.168.99.x -P 4000 -uzabbix -pzabbix zabbix


官方是这么介绍的:TiDB 实现了 Google F1 的在线 Schema 变更算法(具体参见 F1 论文 和我们的一篇 Blog)。 一般情况下,DDL 并不是一个频繁的操作,我们首先要保证的是数据的一致性以及线上业务不受影响。一个完整的 DDL 过程会有 2 到 5 个阶段(取决于语句类型),每个阶段至少会执行 2*lease 时间,假设 lease 设为 1分钟,对于 Drop Table 语句(需要两个阶段),会执行 2*2*1 = 4 分钟。除此之外,DDL 的时间还取决其他的条件,比如做 Add Index 操作时,表中已有的数据量是影响 DDL 时间的主要因素。我们也了解过 Google 内部在 F1 上是如何做 DDL,一般是提交给 DBA,DBA 再通过专用的工具执行,执行的时间会很长。


    耐心的等待着哦!如果不放心,可以use zabbix;show tables;看看表是不是在不停的增长!喝杯咖啡吧,这可能是一个漫长的过程。

TiDB运维技术交流QQ群:
  • 群名称:TiDB技术交流群
  • 群   号:463640808


QQ截图20161027105616.jpg

        近期我也在不停的测试TiDB,并持续给官方进行反馈,有兴趣的小伙伴环境,加入一起交流TiDB在生产环境中的使用经验。