Category Archives: Ops

编译spark-1.0.1源代码

截至到当前为止,spark最新版本为1.0.1。本文测试环境的操作系统是CentOS 7.0 x86_64,jdk为1.7.0_51。编译spark和编译hadoop类似,是一个很简单的过程。

1. 下载spark源代码

2. 安装maven或sbt

(1). java-devel是必须要安装的包

(2). 安装maven

检查maven

Continue reading

Posted in BigData, Linux, Spark.

使用GPG进行加密和签名

GNU Privacy Guard (GnuPG or GPG)是一个GPL许可证的软件加密工具,和PGP比较类似。
与许多非对称加密方法一样,GPG和PGP使用一个密钥对——公钥和私钥——来加密数据。公钥可被广泛传播,甚至保存在公共密匙数据库中以被其他用户查阅。私钥属于私密信息,不会泄漏给其他人。公匙和私匙相互作用对数据进行加密及解密。被公匙加密的数据只能被私匙解密,被私匙加密的数据也只能被一个公匙解密。这样就可以实现双重认证。
当用户想发送关键信息给其他人时,首先用户使用他的私匙来加密信息,然后发送给有公钥的其他人。因为只有使用发送者的公钥才能对接收信息进行解密,这样接收者就能确信信息的确来自某个人。Redhat的RPM软件包签名 就是使用一组 GPG 密钥对来验证软件包的合法性。
下面实际演练一下GPG中生成并管理密钥对、加密和解密、签名和验证等操作。 Continue reading

Posted in Ops, Tools.

使用createrepo配置本地ambari/HDP源

企业内部的hadoop平台一般是不可能连接外部网络。所以需要搭建一个本地的yum repository。下面是简单的配置流程,不足之处欢迎拍砖。
1. 配置hdp的源
wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/2.x/GA/2.1-latest/hdp.repo -O /etc/yum.repos.d/hdp.repo
配置ambari源:
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/1.x/updates/1.6.0/ambari.repo -O /etc/yum.repos.d/hdp.repo
Continue reading

Posted in BigData, Linux, Ops.

SaltStack之初窥门径

salt是一个用Python编写的配置管理及远程执行命令行工具,比puppet轻量、灵活得多。源代码托管于 GitHub 上,简单来说也是一个Client(minion)/Server(master)架构。官方已经提供了中文的文档和知识库:
http://www.saltstack.cn/projects/cssug-kb/wiki
http://docs.saltstack.cn/

安装salt

Salt官方推荐用Salt Bootstrap来安装,该项目是一个以在各平台下能够正确的自动完成Salt安装为目标的shell脚本,会自动判断系统类型并用对应的软件包管理器来进行salt的安装和配置:
wget -O install_salt.sh https://bootstrap.saltstack.com
sh install_salt.sh git develop
这里使用3台CentOS 6.5的虚拟机,可以用epel来安装salt,主服务器安装salt-master,而客户端只安装salt-minion; salt是master和minion的基础依赖,而python-halite是salt的一个web管理界面,后面将介绍。(这里为了方便测试,master也安装minion)

# 检查服务开机启动

2. 启动服务

设置master配置文件,salt使用YAML格式作为配置文件,注意YAML格式的key冒号后需要有一个空格(可以通过http://yaml-online-parser.appspot.com/ Online YAML Parser来验证YAML的格式)

salt需要使用加密信道来保证master/minion的通信,需要在master端认证客户端的minion来保证该通信是可信的。
minion生成key pair,然后用id值命名的pub key发送给 master ,直到接受为止;
master认证完成后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions 目录中;
master将自身的公钥发送给 minion,minion保存的路径为 /etc/salt/pki/minion/minion_master.pub.

minion_id 信息:

查看Key

或者使用salt-key -a OS2来逐一认证。移除一个Key:
salt-key -d OS04
连接测试
测试ping:测试master到minion的通信链路

测试执行命令(显示IP地址)

salt -E 根据正则表达式匹配id来执行:

根据id列表来执行:

在master服务器批量为其他服务器批量推送文件是一个常见的运维需求。SaltStack内置了号称史上最快的消息队列服务ZeroMQ来传输文件(http://zeromq.org/),可以用于大文件传输,开销很低,而在传输大量小文件时也非常有效。文件服务器主要用来在state系统中推送文件到客户端,也可以用于其他文件的传输。(参考文档
http://docs.saltstack.com/en/latest/ref/file_server/file_roots.html)
Continue reading

Posted in Linux, Ops, Tools.

使用Kickstart实现CentOS自动化安装

在配置好DHCP和PXE后,本文将在前文的基础上完成自动安装和配置的工作。自动安装的过程主要使用了两个工具:Anaconda和kickstart。前者(Linux安装程序Anaconda分析)是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)Anaconda支持的管理模式:
a). Kickstart提供的自动化安装
b). 对一个RedHat实施upgrade
c). Rescuse模式对不能启动的系统进行故障排除
Continue reading

Posted in Ops, Tools.

DNSmasq – 配置PXE

PXE(Preboot eXecution Environment)预启动执行环境提供了一种使用网络接口(Network Interface)启动计算机的引导方式。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。PXE server服务通过dhcp和tftp两个服务提供—DHCP Server来取得IP位址,通过TFTP来获得kernel image等文件。而PXE client通过PXE protocol和NBP(network bootstrap program)来完成通过网络的引导。
Continue reading

Posted in Ops, Tools.

DNSmasq – 配置DNS和DHCP

​DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络。它提供了DNS功能和可选择的DHCP功能可以取代dhcpd(DHCPD服务配置)和bind等服务,配置起来更简单,更适用于虚拟化和大数据环境的部署。
Continue reading

Posted in Ops, Tools.

Linux Note – Container初窥

Linux Container是一个操作系统层的轻量级虚拟化技术,百度、腾讯等互联网公司的PaaS平台大多都采用了这项新技术。和XEN,VMware和KVM等硬件抽象层的虚拟化技术相比,LXC更像是加强版的chroot。因为Linux Containers不但没有对硬件设备进行仿真(指令集模拟),还可以使用主机的目录和文件等资源。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。所以,与传统的HAL(硬件抽象层)层次的虚拟化技术相比有以下优势:
a). 更小的虚拟化开销。LXC的诸多特性基本由内核特供,相当于一个加强版的chroot,开销相比HAL的虚拟化小了很多。
b). 快速部署。利用LXC来隔离特定应用,只需要安装LXC,即可使用LXC相关命令来创建并启动容器来为应用提供虚拟执行环境。传统的虚拟化技术则需要先创建虚拟机,然后安装系统,再部署应用。
LXC项目本身只是一个用户空间的工具集(Userspace tools for the Linux Kernel containers),用来使用和管理LXC容器。LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架(参见我之前的一篇文章之前的cgroup简介),可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
Continue reading

Posted in Linux, Ops, Virtualization.

mysqld的启停和配置文件

1. mysqld的启动参数

mysqld是MySQL服务器的守护进程。在使用mysqld启动MySQL服务器时,先保证hostname和/etc/hosts的配置正确。一般需要指定下面几个参数:
MySQL的参数文件(–defaults-file参数):这个参数非常重要,当一个主机存在多个实例时,每个实例要指定不同的参数文件(指定不同的port等参数),其他参数都可以写入这个配置文件中。如果没有指定这个参数,那么mysqld会根据下面的参数搜索参数文件:/etc/my.cnf ->/etc/mysql/my.cnf -> $MYSQL_HOME/my.cnf -> defaults-extra-file(The file specified with –defaults-extra-file=path) -> ./my.cnf -> ~/.my.cnf(User-specific options)
启动用户(–user),即mysqld进程的属主。如果没有配置这个参数,默认的用户是mysql。
该实例的pid文件(–pid-file),如果没有配置这个参数,默认的pid文件为/var/lib/mysql/..pid
该实例的socket文件(–socket),如果没有配置这个参数,默认的pid文件为/var/lib/mysql/mysql.sock
Continue reading

Posted in Linux, MySQL.

Redis – First Class

Redis是一个开源、支持网络、基于内存、键值对存储数据库,其灵感来源于Amazon Dynamo,使用ANSI C编写。其开发由VMware主持,并遵循BSD许可证。
几个重要特点:
主从复制
内存+磁盘持久化
丰富的数据类型,尤其擅长数组、链表、集合、有序集合和散列表等数据的高速处理。所以说,redis不是简单的key-value服务器,而是一个数据结构服务器。
Continue reading

Posted in Linux, NoSQL.