多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建
多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建
一、服务器详情
192.168.122.111 pm01.jq.com pm01 #(puppetmaster服务器)
192.168.122.112 pm02.jq.com pm02 #(puppetmaster服务器)
192.168.122.121 ag01.jq.com ag01 #(puppet agent服务器)
192.168.122.122 ag02.jq.com ag02 #(puppet agent服务器)
192.168.122.131 ca01.jq.com ca01 #(puppet ca服务器)
192.168.122.132 ca02.jq.com ca02 #(puppet ca服务器)
192.168.122.141 lvs01.jq.com lvs01 #(puppet 负载服务器)
192.168.122.142 lvs02.jq.com lvs02 #(puppet 负载服务器)
#vip暂时用于测试,使用ip addr的方式绑定,后续用高可用软件实现bind
192.168.122.130 pc.jq.com pc #(ca服务器的vip,前期绑定在ca01服务器上)
192.168.122.115 lvs.jq.com lvs #(负载服务器的vip,前期绑定在puppetmaster上,后期需要绑定在lvs服务器上)
二、CA服务器部署
CA服务器单独用于签署和撤销证书,当puppetCA服务不可用时,新的客户端将不能获得证书,从而会影响使用,而已签发证书的客户端缺不受影响。因此将CA进行独立队架构,这对容错性而言是非常有必要的。
2.1 安装软件包
[root@ca01 ~]# groupadd -g 3000 puppet
[root@ca01 ~]# useradd -u 3000 -g 3000 puppet
[root@ca01 ~]# yum install puppet puppet-server –y
2.2 bind vip
绑定ca的vip 192.168.122.130到ca01服务器
[root@ca01 ~]#ip addr add 192.168.122.130/24 dev eth0
2.3 生成证书
使用puppet cert命令生成CA服务器与服务器域名证书。生成pc.jq.com和lvs.jq.com两个域名的授权证书文件,前面是证书别名,后面是证书名称。
[root@ca01 ssl]# puppet cert --generate --dns_alt_names pc pc.jq.com
[root@ca01 ssl]# puppet cert --generate --dns_alt_names lvs lvs.jq.com [root@ca01 ssl]# puppet cert --list --all
+ "lvs.jq.com" (SHA256) D6:5B:51:D6:6E:35:61:A4:45:D8:37:17:5B:85:A1:1B:34:BB:2F:D7:48:E8:44:57:B7:1D:42:8E:11:18:81:34 (alt names: "DNS:lvs", "DNS:lvs.jq.com")
+ "pc.jq.com" (SHA256) A7:71:E1:46:1E:F0:F1:70:72:E3:B5:16:03:91:17:6D:68:5B:55:39:B6:79:6B:30:DD:41:ED:10:21:27:2A:33 (alt names: "DNS:pc", "DNS:pc.jq.com")
2.4 配置puppet.conf,添加标签[master]
[root@ca01 ~]# cat /etc/puppet/puppet.conf | grep -v "#"
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
pluginsync = false
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = lvs.jq.com
ca_server = pc.jq.com
environment = jqprd
[master]
confdir = /etc/puppet
certname = pc.jq.com
ca = true #开启CA认证
2.5 启动puppetmaster,CA部署完成
[root@ca01 ~]# /etc/init.d/puppetmaster start
[root@ca01 ~]# chkconfig puppetmaster on
2.6 ca02服务部署
ca02跟ca01的部署方式完全一致,证书是从ca01 拷贝过来的。直接copy /var/lib/ssl/puppet目录
三、PuppetMaster服务器部署
PuppetMaster服务器部署可采用默认的WebRick方式,也可以采用apache+passenger或nginx+passenger方式。
3.1 WebRick方式:
3.1.1 安装软件包
[root@pm01 ~]# groupadd -g 3000 puppet
[root@pm01 ~]# useradd -u 3000 -g 3000 puppet
[root@pm01 ~]# yum install puppet puppet-server -y
3.1.2 设置hosts文件
[root@pm01 ~]# vim /etc/hosts
192.168.122.111 pm01.jq.com pm01
192.168.122.112 pm02.jq.com pm02
192.168.122.121 ag01.jq.com ag01
192.168.122.122 ag02.jq.com ag02
192.168.122.131 ca01.jq.com ca01
192.168.122.132 ca02.jq.com ca02
192.168.122.141 lvs01.jq.com lvs01
192.168.122.142 lvs02.jq.com lvs02
192.168.122.130 pc.jq.com pc
192.168.122.115 lvs.jq.com lvs
3.1.3 bind master vip
绑定LVS的vip 192.168.122.115到pm01服务器,测试用,在没有负载之前,绑定在master上。
ip addr add 192.168.122.115/24 dev eth0
3.1.4 创建证书目录
[root@pm01 ~]# mkdir /var/lib/puppet/ssl/{certs,ca,private_keys} –p
3.1.5 将puppetca上生成的puppetmaster公钥、私钥和根证书复制到pm01
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/signed/lvs.jq.com.pem /var/lib/puppet/ssl/certs/lvs.jq.com.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/ca_crt.pem /var/lib/puppet/ssl/certs/ca.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/private_keys/lvs.jq.com.pem /var/lib/puppet/ssl/private_keys/lvs.jq.com.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/ca_crl.pem /var/lib/puppet/ssl/ca/ca_crl.pem
3.1.6 配置puppet.conf,添加标签[master],关闭ca
[root@pm01 ~]# grep -v "#" /etc/puppet/puppet.conf
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
privatekeydir = $ssldir/private_keys { group = service }
hostprivkey = $privatekeydir/$certname.pem { mode = 640 }
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = lvs.jq.com #puppetmaster域名,应该与之前手动生成的证书匹配
ca_server = pc.jq.com #ca证书服务器
[master]
certname = lvs.jq.com #puppetmaster的域名,应该与之前手动生成的证书匹配
ca = false #关闭ca验证
3.1.7 启动puppetmaster服务,puppetmaster部署完成
[root@pm01 ssl]# /etc/init.d/puppetmaster restart
3.1.8 运行puppet命令进行本地证书申请
[root@pm01 ssl]# puppet agent -t
Info: Creating a new SSL key for pm01.jq.com
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for pm01.jq.com
Info: Certificate Request fingerprint (SHA256): 2C:09:32:E1:13:CA:0F:44:3B:93:4B:0F:0E:2D:46:19:3A:37:E1:47:C7:D3:E8:2C:A6:83:44:B3:D3:94:63:D6
Exiting; no certificate found and waitforcert is disabled
3.1.9 登录puppetca进行证书签发
[root@ca01 ~]# puppet cert --sign pm01.jq.com
Notice: Signed certificate request for pm01.jq.com
Notice: Removing file Puppet::SSL::CertificateRequest pm01.jq.com at '/var/lib/puppet/ssl/ca/requests/pm01.jq.com.pem'
3.1.10 再次运行puppet命令进行测试连通性
[root@pm01 ssl]# puppet agent -t
Info: Caching certificate for pm01.jq.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for pm01.jq.com
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for pm01.jq.com
Info: Applying configuration version '1425526708'
Notice: Finished catalog run in 0.17 seconds
3.1.11 在kspupt-ca上申请本地证书
[root@ca01 ~]# vim /etc/puppet/puppet.conf
[agent]
server = lvs.jq.com
ca_server = pc.jq.com
[root@ca01 ~]# puppet agent -t
[root@ca01 ~]# puppet cert --sign ca01.jq.com
[root@ca01 ~]# puppet agent –t
3.2 Nginx+Passenger方式:
注:可参考 http://kisspuppet.com/2014/10/20/puppet_learning_ext4/
3.2.1、配置nginx
[root@pm01 ssl]# cat /usr/local/nginx/conf/vhosts/passenger.conf
server {
listen 8140 ssl;
server_name puppetmaster;
passenger_enabled on;
passenger_set_cgi_param HTTP_X_CLIENT_DN $ssl_client_s_dn;
passenger_set_cgi_param HTTP_X_CLIENT_VERIFY $ssl_client_verify;
proxy_buffer_size 4000k;
proxy_buffering on;
proxy_buffers 32 1280k;
proxy_busy_buffers_size 17680k;
client_max_body_size 10m;
client_body_buffer_size 4096k;
access_log /var/log/nginx/puppet_access.log;
error_log /var/log/nginx/puppet_error.log;
root /etc/puppet/rack/public;
ssl off;
ssl_session_timeout 5m;
ssl_certificate /var/lib/puppet/ssl/certs/lvs.jq.com.pem;
ssl_certificate_key /var/lib/puppet/ssl/private_keys/lvs.jq.com.pem;
ssl_client_certificate /var/lib/puppet/ssl/certs/ca.pem;
ssl_crl /var/lib/puppet/ssl/ca/ca_crl.pem;
ssl_verify_client optional;
ssl_ciphers SSLv2:-LOW:-EXPORT:RC4+RSA;
ssl_prefer_server_ciphers on;
ssl_verify_depth 1;
ssl_session_cache shared:SSL:128m;
# File sections
location /production/file_content/files/ {
types { }
default_type application/x-raw;
alias /etc/puppet/files/;
}
}
3.2.2、配置puppet.conf
[root@pm01 ssl]# grep -v "#" /etc/puppet/puppet.conf
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
privatekeydir = $ssldir/private_keys { group = service }
hostprivkey = $privatekeydir/$certname.pem { mode = 640 }
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = lvs.jq.com
ca_server = pc.jq.com
[master]
certname = lvs.jq.com
ca = false
ssl_client_verify_header = HTTP_X_CLIENT_VERIFY
ssl_client_header = HTTP_X_CLIENT_DN
3.3 master02服务器部署
master02的部署与master01的完全一致,包括拷贝证书部分
4 Puppet LB负载均衡器部署
4.1 puppet认证建立
4.1.1、安装软件包
[root@lvs01 ~]# groupadd -g 3000 puppet
[root@lvs01 ~]# useradd -u 3000 -g 3000 puppet
[root@lvs01 ~]# yum install puppet
4.1.2、编辑hosts文件
[root@lvs01 ~]# vim /etc/hosts
192.168.122.111 pm01.jq.com pm01
192.168.122.112 pm02.jq.com pm02
192.168.122.121 ag01.jq.com ag01
192.168.122.122 ag02.jq.com ag02
192.168.122.131 ca01.jq.com ca01
192.168.122.132 ca02.jq.com ca02
192.168.122.141 lvs01.jq.com lvs01
192.168.122.142 lvs02.jq.com lvs02
192.168.122.130 pc.jq.com pc
192.168.122.115 lvs.jq.com lvs
4.1.3、创建证书目录
[root@lvs01 ~]# mkdir /var/lib/puppet/ssl/{certs,ca,private_keys} –p
4.1.4、将ca上生成的puppetmaster公钥、私钥和根证书复制到lvs01
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/signed/lvs.jq.com.pem /var/lib/puppet/ssl/certs/lvs.jq.com.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/ca_crt.pem /var/lib/puppet/ssl/certs/ca.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/private_keys/lvs.jq.com.pem /var/lib/puppet/ssl/private_keys/lvs.jq.com.pem
scp -r root@192.168.122.130:/var/lib/puppet/ssl/ca/ca_crl.pem /var/lib/puppet/ssl/ca/ca_crl.pem
4.1.5、配置puppet.conf,修改标签[agent],增加server和ca_server字段
[root@lvs01 ~]# vim /etc/puppet/puppet.conf
[agent]
server = lvs.jq.com
ca_server = pc.jq.com
4.1.6、运行puppet命令进行本地证书申请
[root@lvs01 ~]# puppet agent -t
4.1.7、登录ca进行证书签发
[root@ca01 ~]# puppet cert --sign lvs01.jq.com
4.1.8、再次运行puppet命令进行测试连通性
[root@lvs01 ~]# puppet agent -t
Info: Caching certificate for lvs01.jq.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for lvs01.jq.com
Info: Loading facts
Info: Caching catalog for lvs01.jq.com
Info: Applying configuration version '1425527450'
Notice: Finished catalog run in 0.24 seconds
4.2 安装并配置nginx负载均衡器
4.2.1、安装nginx软件
[root@lvs01 ~]# groupadd -g 3001 nginx
[root@lvs01 ~]# useradd -u 3001 -g 3001 nginx
[root@lvs01 ~]# yum install nginx
4.2.2、临时设置VIP地址(后面通过高可用软件代替)
[root@lvs01 ~]# ip addr add 192.168.122.115/24 dev eth0
此处请将之前bind到pm01的vip取消
4.2.3、配置nginx虚拟主机,添加upstrem
[root@lvs01 ~]# cat /etc/nginx/conf.d/puppetmaster.conf
upstream puppet-master {
server 192.168.122.111:8140;
server 192.168.122.112:8140;
}
server {
listen 8140 ssl;
server_name puppetmaster;
access_log /var/log/nginx/puppet_access.log;
error_log /var/log/nginx/puppet_error.log;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-Client-Verify $ssl_client_verify;
client_max_body_size 100m;
client_body_buffer_size 1024k;
proxy_buffer_size 100m;
proxy_buffers 8 100m;
proxy_busy_buffers_size 100m;
proxy_temp_file_write_size 100m;
proxy_read_timeout 500;
ssl on;
ssl_session_timeout 5m;
ssl_certificate /var/lib/puppet/ssl/certs/lvs.jq.com.pem;
ssl_certificate_key /var/lib/puppet/ssl/private_keys/lvs.jq.com.pem;
ssl_client_certificate /var/lib/puppet/ssl/certs/ca.pem;
ssl_crl /var/lib/puppet/ssl/ca/ca_crl.pem;
ssl_verify_client optional;
ssl_prefer_server_ciphers on;
ssl_verify_depth 1;
ssl_session_cache shared:SSL:128m;
location / {
proxy_redirect off;
proxy_pass https://puppet-master;
}
}
4.2.4、编辑hosts文件,puppetmaster解析指向VIP
[root@lvs01 ~]# vim /etc/hosts
192.168.122.111 pm01.jq.com pm01
192.168.122.112 pm02.jq.com pm02
192.168.122.121 ag01.jq.com ag01
192.168.122.122 ag02.jq.com ag02
192.168.122.131 ca01.jq.com ca01
192.168.122.132 ca02.jq.com ca02
192.168.122.141 lvs01.jq.com lvs01
192.168.122.142 lvs02.jq.com lvs02
192.168.122.130 pc.jq.com pc
192.168.122.115 lvs.jq.com lvs
4.2.5、修改ca01和pm01的hosts文件puppetmaster解析
[root@kspupt-ca1 ~]# vim /etc/hosts
192.168.122.111 pm01.jq.com pm01
192.168.122.112 pm02.jq.com pm02
192.168.122.121 ag01.jq.com ag01
192.168.122.122 ag02.jq.com ag02
192.168.122.131 ca01.jq.com ca01
192.168.122.132 ca02.jq.com ca02
192.168.122.141 lvs01.jq.com lvs01
192.168.122.142 lvs02.jq.com lvs02
192.168.122.130 pc.jq.com pc
192.168.122.115 lvs.jq.com lvs
[root@pm01 ~]# vim /etc/hosts
192.168.122.111 pm01.jq.com pm01
192.168.122.112 pm02.jq.com pm02
192.168.122.121 ag01.jq.com ag01
192.168.122.122 ag02.jq.com ag02
192.168.122.131 ca01.jq.com ca01
192.168.122.132 ca02.jq.com ca02
192.168.122.141 lvs01.jq.com lvs01
192.168.122.142 lvs02.jq.com lvs02
192.168.122.130 pc.jq.com pc
192.168.122.115 lvs.jq.com lvs
4.2.6、启动nginx服务器
[root@lvs01 ~]# /etc/init.d/nginx start
4.2.7、再次运行puppet命令进行测试连通性
[root@kspupt-ca1 ~]# puppet agent -t
[root@pm01 ~]# puppet agent -t
[root@lvs01 ~]# puppet agent -t
[root@pm01 ~]# tailf /var/log/nginx/puppet_access.log
[root@lvs01 ~]# tailf /var/log/nginx/puppet_access.log
4.3 安装配置Haproxy负载均衡
安装haproxy和keepalived过程略去,网上很多教程
[root@lvs01 keepalived]# cat /etc/haproxy/haproxy.cfg
global
maxconn 40000
ulimit-n 500000
log 127.0.0.1 local0
uid 99
gid 99
chroot /tmp
# nbproc 4
daemon
defaults
log global
retries 2
option redispatch
option dontlognull
balance roundrobin
timeout connect 30000ms
timeout client 30000ms
timeout server 30000ms
timeout check 2000
listen admin_stats
bind 0.0.0.0:8080
mode http
stats refresh 5s
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /haproxy
stats auth admin:password
listen puppetmaster *:8140
mode tcp
option ssl-hello-chk
# option tcplog
#balance source
# balance roundrobin
balance source
server pm01 pm01.jq.com:8140 check inter 2000 fall 3
server pm02 pm02.jq.com:8140 check inter 2000 fall 3
4.4 配置keepalived,取消vip 通过ip addr 绑定
Keepalived的备机配置略去,网上也可以搜索到,需要修改的地方很少。
[root@lvs01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
test@gmail.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.122.115 #此处为负载的VIP,配置keepalived之后,切记去掉之前ip addr的绑定
}
}
4.4.1 Keepalived监控haproxy脚本
[root@lvs01 ~]# cat /etc/keepalived/check_haproxy.sh
#!/bin/bash
. /etc/profile
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/etc/init.d/haproxy start
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
4.5 Lvs02服务器部署
Lvs02的配置与lvs01的配置完全一致,将此服务器作为lvs01的备机,包括keepalived+haproxy。
几乎照搬了http://kisspuppet.com/2014/10/21/puppet_learning_ext6/ 的文章,非常感谢kisspuppet!
多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建的更多相关文章
- rabbitmq+haproxy+keepalived实现高可用集群搭建
项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...
- CentOS7 haproxy+keepalived实现高可用集群搭建
一.搭建环境 CentOS7 64位 Keepalived 1.3.5 Haproxy 1.5.18 后端负载主机:192.168.166.21 192.168.166.22 两台节点上安装rabbi ...
- rabbitmq+ keepalived+haproxy高可用集群详细命令
公司要用rabbitmq研究了两周,特把 rabbitmq 高可用的研究成果备下 后续会更新封装的类库 安装erlang wget http://www.gelou.me/yum/erlang-18. ...
- FastDFS+Nginx+fastdfs-nginx-module集群搭建
一.实验环境说明 操作系统: Centos 6.6 x64 FastDFS 相关版本: fastdfs-5.05 fastdfs-nginx-module-v1.16 libfastcommon-v1 ...
- tomcat+nginx+redis集群搭建并解决session共享问题。
1 集群搭建 https://www.cnblogs.com/yjq520/p/7685941.html 2 session共享 https://blog.csdn.net/tuesdayma/art ...
- 实战| Nginx+keepalived 实现高可用集群
一个执着于技术的公众号 前言 今天通过两个实战案例,带大家理解Nginx+keepalived 如何实现高可用集群,在学习新知识之前您可以选择性复习之前的知识点: 给小白的 Nginx 10分钟入门指 ...
- FastDFS+nginx+keepalived集群搭建
安装环境 nginx-1.6.2 libfastcommon-master.zip FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastd ...
- nginx实现集群高可用
大家知道NGINX作为反向代理服务器可以实现负载均衡,同时也可以作为静态文件服务器,它的特点就是并发支持大,单机可同时支持3万并发,现在很多网站都把NGINX作为网关入口来统一调度分配后端资源.但是如 ...
- Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群
一.集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat. ...
随机推荐
- Linux shell join命令详解
Linux join命令 2012-02-09 17:49:00| 分类: SHELL | 标签:linux join 文件连接 |字号 订阅join命令 功能:“将两个文件里指定栏位同样的行连接起来 ...
- 机器学习Coursera学习总结
Coursera上Andrew NG的机器学习实在是太火了,最近有时间花费了20来天的时间(每天3小时左右)终于学习完了全部的课程,总结如下: (1)适合入门,讲的比较基础,Andrew讲的很棒: ( ...
- php类和对象(一)
对象:任何东西都可以称为对象,类实例化出来的东西类:对所有同类的对象抽象出来的东西 Info: Code,Name,Sex,Nation,Birthday对象:一条具体的信息 p001 张三 男 汉族 ...
- 每天一个Linux命令(21)find命令_xargs参数
xargs 与 exec 的作用类似,但是xargs与find 一起使用时,一般配合管道一起使用. 前面的输出转换为后方指令的参数输入,使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的 ...
- if-else 与 switch-case语句
if语句就是起一个判断作用,在c语言中有三种表达形式:1.if(表达式)语句:pl. if(x==y)printf("%d",x); //* "== ...
- Vim 标签定义
一.单个文件: m+标记字符 打上标记,如在开头行按ms(start),标记开头: 如需返回到自己的标记点,按`+标记字符就行: 二.多个文件: m+大写标记字符 如果删除了标签的行,同时也删除了标签 ...
- 有关java是编译型语言还是解释性语言
博客分类: 技术杂谈 JavaD语言JVMC++C# 小生现在大二, java学习的时间不到一年 但是自认学习效率还是比较高的,同时在java上用时也比较多 在周末,放假,暑假. 每天能花费12+个小 ...
- Mysql视图使用总结
视图View使用总结: 视图可以看作为“虚拟表”,因为它返回的结果集格式与实体数据表返回的数据集格式类似,并且引用视图的方式与引用数据表的方式相同.每次查询使用视图时,DBMS会动态生成视图结果集所需 ...
- CV2图像操作
一.读入图像使用函数cv2.imread(filepath,flags)读入一副图片filepath:要读入图片的完整路径flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一 ...
- 分享知识-快乐自己:运行(wordcount)案例
运行 wordcount 案例: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce ...